Sanic十二:Sanic抛出异常、捕获异常、处理

 

异常可以从请求处理程序中抛出,并由Sanic自动处理。异常将消息作为其第一个参数,也可以将状态代码返回到HTTP响应中。

Sanic提供了exceptions,里面已经内置了许多常见异常

Sanic源码可见,先是基于Exception封装了一个SanicException,然后再基于SanicException封装了许多常见的异常,同时还提供了abort函数,用于抛出自定义异常

Sanic十二:Sanic抛出异常、捕获异常、处理

Sanic十二:Sanic抛出异常、捕获异常、处理

Sanic十二:Sanic抛出异常、捕获异常、处理

 

一、抛出异常

Sanic十二:Sanic抛出异常、捕获异常、处理

Sanic十二:Sanic抛出异常、捕获异常、处理

Sanic十二:Sanic抛出异常、捕获异常、处理

 

二、捕获异常并处理异常

方式1:使用装饰器,@app.exception(指定异常)来修饰处理函数,处理函数必须接受两个参数,第一个是request,第二个是exception

Sanic十二:Sanic抛出异常、捕获异常、处理

Sanic十二:Sanic抛出异常、捕获异常、处理

方式2:使用app.error_handler.add(异常类型, 异常处理函数)来添加异常处理,处理函数必须接受两个参数,第一个是request,第二个是exception

Sanic十二:Sanic抛出异常、捕获异常、处理

Sanic十二:Sanic抛出异常、捕获异常、处理

 

捕获所有异常:当不知道会抛出什么异常,或者相统一处理异常,则直接捕获Exception即可

Sanic十二:Sanic抛出异常、捕获异常、处理

Sanic十二:Sanic抛出异常、捕获异常、处理

 

三、自定义异常类

Sanic提供了很多异常类,但是可能并不能满足实际业务需求,在某些情况下,您可能希望向默认情况下提供的内容添加更多的错误处理功能。在这种情况下,您可以将sanic的默认错误处理程序子类化

Sanic十二:Sanic抛出异常、捕获异常、处理

使用:

方法一:实例化Sanic时指定

Sanic十二:Sanic抛出异常、捕获异常、处理

方法二:实例化Sanic后指定

Sanic十二:Sanic抛出异常、捕获异常、处理

 

上一篇:Sanic框架中的同步和异步


下一篇:递归练习