合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# 异常 Sanic可以自动地在handler中抛出异常,异常信息会作为它的第一个参数,包含`response`的状态码。 ## 抛出异常 使用Python自带的`raise`或者`exceptions.abort()`都可以抛出异常 ```python from sanic.exceptions import ServerError @app.route('/killme') def i_am_ready_to_die(request): raise ServerError("Something bad happened", status_code=500) @app.route('/youshallnotpass') def no_no(request): abort(401) # 直接返回,后续代码不会再被执行 text("OK") ``` `about()`封装了`raise`,会抛出一个基于`SanicException`的异常,除非特别指定,否则返回HTTP状态码对应的标准信息(在`response.STATUS_CODES`中设置)。 ## 自定义异常 使用`@app.exception`装饰器,可以覆盖默认的异常处理程序。这个装饰器内置了异常列表作为参数,可以通过`SanicException`捕获它们。被装饰的方法必须有`Request`和`Exception`两个对象作为参数。 ```python 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)) ``` ## 常用的异常 - `NotFound` 404 - `ServerError` 500 完整的异常列表可参见`sanic.exceptions`