1 from . import auth
2 @auth.app_errorhandler(404)
3 def error_404(error):
4 response = dict(status=0, message="404 Not Found")
5 return jsonify(response), 404
1 import json
2 from flask import Blueprint, Response
3
4 exception = Blueprint('exception',__name__)
5
6 @exception.app_errorhandler(404)
7 def error_404(error):
8 """这个handler可以catch住所有abort(404)以及找不到对应router的处理请求"""
9 res = {"status": 404, "message": "404错误,找不到对应router"}
10 return Response(json.dumps(res), mimetype='application/json')
11
12 @exception.app_errorhandler(405)
13 def error_405(error):
14 """这个handler可以catch住所有abort(405)以及请求方式有误的请求"""
15 res = {"status": 405, "message": "请求方式有误"}
16 return Response(json.dumps(res), mimetype='application/json')
17
18 # @exception.app_errorhandler(Exception)
19 # def error_500(error):
20 # """这个handler可以catch住所有的abort(500)和raise exeception."""
21 # res = {"status": 500, "message": "系统内部错误"}
22 # return Response(json.dumps(res), mimetype='application/json')
23
24 class MyError(Exception):
25 """自定义错误类"""
26 pass
1 # 导入error.py文件中的exception蓝图
2 from error import exception
3 from flask import Flask, request, Response
4
5
6 app = Flask(__name__)
7 # 注册蓝图,并指定其对应的前缀(url_prefix)
8 app.register_blueprint(exception, url_prefix='/error')
9 # 以下可以写业务代码
10
11
12 if __name__ == '__main__':
13 app.run(host='0.0.0.0', port=8089, debug=False, threaded=True)
当我们不是使用的工厂模式创建app时,app.errorhandler(401),即可捕捉全局401状态;若使用了create_app方式创建app,则无法进行捕捉,若想捕捉,可以在蓝图中写,如admin.errorhandler(401),即捕捉admin蓝图下所有401状态码,admin.app_errorhandler(401),则是捕捉的全局的401状态码,即其他蓝图中的401状态,也会被捕捉,进行处理