问题缘起
在开发的过程中,总会有一些异常需要我们进行捕获:
- 例如数据库插入的时候,如果插入不成功,则需要捕获异常。
- 如果数据删除的时候,如果删除不成功,则需要捕获异常。
- …
诸如此类问题,每当程序捕获到异常,我们就需要对异常进行对应的状态码返回。
最简单的方式就是,每当一个异常产生,我们都在对应的位置添加try except
语句块。然后根据接口文档事先定义好的状态码来进行异常值的返回。然而这对于有代码洁癖症的患者来说,重复性的 try except 简直就是一种折磨。
因此在后端框架中,本人更推荐通过全局异常处理的方式来进行异常的返回(话说这玩意儿貌似有个高大上的名字:面向切面编程
)。
这里我以 Flask 框架为示例,通过钩子函数的方式,来对异常进行捕获。
动态生成异常子类
首先我们需要定义一个异常处理的基类,通过这个基类来继承出对应异常的子类。
class DVServerException(Exception):
code = OK
data = ""
def __init__(self, data: str = "", exception: Optional