在flask中有errorhandler和app_errorhandler两种方法可以捕捉到视图函数中的异常并自定义处理,并终端request请求
那我们就来看看他们的区别以及使用方法
from . import main from flask import jsonify @main.errorhandler(404) def error_404(error): response = {'code': 1,'error': '404 not found'} return jsonify(response), 404 @main.app_errorhandler(403) def error_403(error): response = {'code': 1,'error': '403 forbidden'} return jsonify(response), 403 @main.app_errorhandler(500) def error_500(error): response = {'code': 1,'error': '500 server internal error'} return jsonify(response), 500
我们可以随便测试一个没有的页面试试访问情况
可以看到当前蓝本是main,那么使用@main.errorhandler这样装饰视图函数的话是可以捕捉到当前main蓝本,也就是当前这个蓝本定义的URL路由规则下的所有的异常错误,并返回自定义的40x状态码和响应的json结果
如果当@main.app_errorhandler这样装饰视图函数的话那么是可以突破蓝本的定义实现注册全局的错误处理程序
当我们捕捉到了router的异常后,我们不仅仅是可以直接中断请求,返回一个错误的json数据,我们在实际应用中还可以自定义错误模版页面,返回一个默认的错误页面进行引导