flask统一异常捕获(作用:统一捕获指定的异常并返回)

发布时间 2023-10-04 12:21:52作者: 蕝戀

flask中可以使用装饰器errorhandler来对指定的异常、状态码等统一捕获并处理。

对指定的状态码进行统一捕获

@app.errorhandler(404)
# 参数e是异常的详细信息的对象,必须要有一个参数接收异常对象。
def pagenotfound(e):
    # 比如可以重定向到统一的404静态页面中。
    # 不过如果是前后端分离开发,一般都是直接返回reseful的json数据,然后前端根据code来自行重定向到404页面。
    data = {"code": 404, "data": None}
    response = jsonify(data)
    response.status_code = data["code"]
    return response

对某种异常类统一捕获

@app.errorhandler(ZeroDivisionError)
def zeroerror(e):
    return "除数不能为0!"

# 不用装饰器的方法直接调用方式:这种方式学装饰器的时候也学过了,相当于将@装饰拆解开来而已。
app.errorhandler(ZeroDivisionError)(zeroerror)

如果是这样,还不如用官方推荐的

app.register_error_handler(code_or_exception, handler_func)