Flask 全局错误处理(一个函数处理所有 HTTP 错误)

在 Flask 程序中,使用 app.errorhandler() 装饰器可以注册错误处理函数,传入 HTTP 错误状态码或是特定的异常类:

如果发生 404 错误,就会触发这个函数获取返回值作为响应主体。

通常我们会为不同的 HTTP 错误编写各自的的错误处理函数,以便返回不同的响应。如果你愿意的话,我们也可以编写一个统一的错误处理函数,这个函数会处理所有的 HTTP 错误和一般异常,只需要在装饰器内传入 Exception 类即可:

现在所有的 HTTP 错误都会触发这个函数。你也可以在函数中对错误进行分类处理:

如果你使用 Flask 0.12 版本,则需要参考这个 SO 回答重写相关方法。

附注一些关于错误处理的小知识:

  • 对于一般的程序异常(比如 NameError),如果没有特定的异常处理函数,默认都会触发 500 错误处理函数。
  • 开启调试模式的时候,500 错误会显示错误调试页面。
  • 500 错误发生时传入错误处理函数的是真正的异常对象,不是 Werkzeug 内置的 HTTP 异常类。
  • 内置的 HTTP 异常类的 description 和 code 属性分别返回错误描述和状态码。

说说你的想法吧!

邮箱不会被公开,必填项已用*标出。

*