.. _errors:

Error Handling
==============

When a request results in an error condition, you *could* manually set the
error status, appropriate response headers, and even an error body using the
``resp`` object. However, Falcon tries to make things a bit easier and more
consistent by providing a set of error classes you can raise from within
your app. Falcon catches any exception that inherits from
``falcon.HTTPError``, and automatically converts it to an appropriate HTTP
response.

You may raise an instance of ``falcon.HTTPError`` directly, or use any one
of a number of predefined error classes that try to be idiomatic in
setting appropriate headers and bodies.

Base Class
----------

.. autoclass:: falcon.HTTPError
    :members:

Mixins
------

.. autoclass:: falcon.http_error.NoRepresentation
    :members:

Predefined Errors
-----------------

.. automodule:: falcon
    :members: HTTPInvalidHeader, HTTPMissingHeader,
        HTTPInvalidParam, HTTPMissingParam,
        HTTPBadRequest, HTTPUnauthorized, HTTPForbidden, HTTPNotFound,
        HTTPMethodNotAllowed, HTTPNotAcceptable, HTTPConflict,
        HTTPLengthRequired, HTTPPreconditionFailed, HTTPUnsupportedMediaType,
        HTTPRangeNotSatisfiable, HTTPInternalServerError, HTTPBadGateway,
        HTTPServiceUnavailable
