flask的 errorhandler装饰器实现应用错误处理

flask提供了一个专门用来处理应用错误的装饰器errorhandler, 利用这个装饰器,你可以非常轻松的实现对系统错误异常的捕捉和处理。

errorhandler可以传入http code,例如404,500。这是比较常见的请求错误,如果能够为这种错误提供专门的页面,无疑会提高用户的体验。除了http code, 还可以传入异常类,捕捉特定的异常。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    0/0
    return 'index'

@app.route('/user')
def user():
    raise ValueError
    return 'user'


@app.errorhandler(404)
def error(e):
    print('捕捉到404')
    return 'error', 404


@app.errorhandler(ZeroDivisionError)
def catch_except(e):
    return '捕捉到异常'+ str(e), 500


@app.errorhandler(Exception)
def catch_all_except(e):
    return '捕捉任意异常'+ str(e), 500

if __name__ == '__main__':
    app.run()

你可以捕捉特定的异常,做特定的处理,也可以捕捉任意异常,只需要传入参数Exception即可。

如果某个特定异常被抛出后,有专门处理的函数,那么优先由这个函数进行处理。例如视图函数index抛出ZeroDivisionError,那么优先由catch_except函数进行处理,如果没有专门的处理函数,则由catch_all_except进行处理。

如果错误发生在蓝图里,则优先由在蓝图里注册的错误处理器进行处理,404错误不在其中,因为404错误发生的更早,蓝图里检测不到。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案