Exceptions¶
Exceptions can be thrown from within request handlers and will automatically be handled by Sanic. Exceptions take a message as their first argument, and can also take a status code to be passed back in the HTTP response.
Throwing an exception¶
To throw an exception, simply raise the relevant exception from the
sanic.exceptions module.
from sanic.exceptions import ServerError
@app.route('/killme')
def i_am_ready_to_die(request):
raise ServerError("Something bad happened", status_code=500)
Handling exceptions¶
To override Sanic’s default handling of an exception, the @app.exception
decorator is used. The decorator expects a list of exceptions to handle as
arguments. You can pass SanicException to catch them all! The decorated
exception handler function must take a Request and Exception object as
arguments.
from sanic.response import text
from sanic.exceptions import NotFound
@app.exception(NotFound)
def ignore_404s(request, exception):
return text("Yep, I totally found the page: {}".format(request.url))
Useful exceptions¶
Some of the most useful exceptions are presented below:
NotFound: called when a suitable route for the request isn’t found.ServerError: called when something goes wrong inside the server. This usually occurs if there is an exception raised in user code.
See the sanic.exceptions module for the full list of exceptions to throw.
Previous: Middleware
Next: Blueprints