首页 > 其他 > 详细

flask exception

时间:2019-06-26 21:23:13      阅读:146      评论:0      收藏:0      [点我收藏+]

 flask exception

 

1.1.    abort

概念:flask中的异常处理语句,功能类似于python中raise语句,只要触发abort,后面的代码不会执行,abort只能抛出符合http协议的异常状态码。

from werkzeug.exceptions import abort

@app.route(‘/abort‘)
def view_abort():
    abort(405)
    return ‘abort test from main route‘

 

1.2.    errorhandler

errorhandler 装饰器是配合abort函数使用的,是为了进一步提升用户体验,他接收的是abort函数抛出的异常状态码,自定义错误页面和信息。

 

@app.route(‘/abort‘)
def view_abort():
    abort(405)
    return ‘abort test from main route‘

@app.errorhandler(405)
def err_404(e):
    return 错误404‘ + str(e)

 

错误处理有两种:非全局与全局

如果使用蓝图,则下面这种是非全局的。不使用蓝图的情况下则结果没有区别。

@blue_t.errorhandler(405)
def err_405(e):
    print(‘err_405‘)
    return ‘error 405 from blueprint blue_t‘

 

app_errorhandler()是全局的

@blue_t.app_errorhandler(405)
def err_404(e):
    return ‘blueprint error_405‘
    #return render_template(‘error/404.html‘)

 

当我们不是使用的工厂模式创建app时,app.errorhandler(401),即可捕捉全局401状态;若使用了create_app方式创建app,则无法进行捕捉,若想捕捉,可以在蓝图中写,如admin.errorhandler(401),即捕捉admin蓝图下所有401状态码,admin.app_errorhandler(401),则是捕捉的全局的401状态码,即其他蓝图中的401状态,也会被捕捉,进行处理

 

注意:后执行的handler会覆盖掉先声明的handler。

示例:

app.py

@app.errorhandler(405)
def err_404(e):
    print(‘main:err_404‘)
    return 错误404‘ + str(e)

蓝图中声明

@blue_t.app_errorhandler(405)
def err_404(e):
    return ‘blueprint error_405‘
   
#return render_template(‘error/404.html‘)

访问/abort会跳转到蓝图中的errorhandler。

2.      总结

蓝图中的异常处理使用@blueprint.errorhandler()

 

顶层app中的异常处理集中到函数中然后调用。

# 异常处理
def register_errors(app):
    @app.errorhandler(405)
    def method_not_allowed(e):
        return api_abort(405, message=‘The method is not allowed for the requested URL.‘)

 

flask exception

原文:https://www.cnblogs.com/wodeboke-y/p/11093538.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!