bqu*_*i56 6 python error-handling flask
我有一个errors.py模块将错误映射到模板.我想添加一个默认的错误处理程序并遇到:http://flask.pocoo.org/mailinglist/archive/2012/7/12/default-error-handler/#cbeb8809dc0da7133f14b99e16f31d6b
我正在使用Blueprint模块化的东西,而错误模块有以下映射:
@err.app_errorhandler(403)
def forbidden(e):
return render_template('403.html'), 403
@err.app_errorhandler(500)
def serverError(e):
return render_template('500.html'), 500
@err.app_errorhandler(Exception)
def defaultHandler(e):
return render_template('defaultError.html'), e.code
Run Code Online (Sandbox Code Playgroud)
特定映射(403,500)如果我中止它们(或自然地诱导它们)就可以正常工作,但如果我中止其他任何事情(404等),defaulHandler()则不会调用它.
你可以这样做:
app.config['TRAP_HTTP_EXCEPTIONS']=True
app.register_error_handler(Exception, defaultHandler)
Run Code Online (Sandbox Code Playgroud)
看起来 404 实际上并没有在 Flask 代码中引发异常,因此默认处理程序没有任何理由被命中。raise Exception如果我添加到我的 URL 映射之一并导航到它,我就可以让它命中。
当然,如果你有一个 500 错误映射,异常将变成服务器端错误,因此它会落入该范围,所以我此时无法看到异常捕获的使用(我不认为任何情况下它都会捕捉到 500errorhandler不会捕捉到的东西)。
| 归档时间: |
|
| 查看次数: |
7914 次 |
| 最近记录: |