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.'
)

最新文章

  1. photoshop, 钢笔上色
  2. Qt学习笔记 TableWidget使用说明和增删改操作的实现
  3. 任意阶魔方阵(幻方)的算法及C语言实现
  4. MySQL Optimizer Tracemy 与 logmnr:MySQL binlog logmnr----MYSQL 邱伟胜 专家博客
  5. servlet过滤器配置白名单、黑名单
  6. Word Pattern II 解答
  7. Oracle 11G CRUD操作监控单个表
  8. ACdream 1020 The Game about KILL
  9. Composer 常用命令总结(三)
  10. JS闭包,以及适用场景
  11. Keepalived实现双机热备
  12. 没人看系列-----html随笔
  13. OrmLite-更符合面向对象的数据库操作方式
  14. Spring Boot + Netty 中 @Autowired, @Value 为空解决
  15. WPF的AutoCompleteBox控件
  16. java概念基础笔记整理
  17. python中的数字取整(ceil,floor,round)概念和用法
  18. node通过QQ邮箱发送邮件
  19. IBM MQ + WebSphere + Spring JMS配置方法
  20. fzyzojP3618 -- [校内训练-互测20180412]士兵的游戏

热门文章

  1. html标签的快捷
  2. 数据库程序接口——JDBC——API解读第一篇——建立连接的核心对象
  3. python关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)
  4. python进阶(十七)xml(下)
  5. composer install报错intervention/image 2.4.x-dev requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
  6. IOS上给body和html绑定click事件的坑
  7. Redis注册成服务
  8. Python基础数据类型以及对应方法
  9. php中判断shell_exec执行结果
  10. java处理节假日和工作时间的工具类