28 lines
1005 B
Markdown
28 lines
1005 B
Markdown
# 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. Check sanic.exceptions for the full list of exceptions to throw.
|
|
|
|
## Throwing an exception
|
|
|
|
```python
|
|
from sanic import Sanic
|
|
from sanic.exceptions import ServerError
|
|
|
|
@app.route('/killme')
|
|
def i_am_ready_to_die(request):
|
|
raise ServerError("Something bad happened")
|
|
```
|
|
|
|
## Handling Exceptions
|
|
|
|
Just use the @exception decorator. The decorator expects a list of exceptions to handle as arguments. You can pass SanicException to catch them all! The exception handler must expect a request and exception object as arguments.
|
|
|
|
```python
|
|
from sanic import Sanic
|
|
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))
|
|
``` |