jtyoui.flasks.flaskerror 源代码

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time  : 2019/11/28 10:51
# @Author: Jtyoui@qq.com
from jtyoui.data.constant import http_status_code


[文档]def flask_error_abort(code, jsonify, error, message=None, **kwargs): """手动抛出flask异常、并且增加error详细异常""" return flask_abort(code=code, jsonify=jsonify, message=message, error=error, **kwargs)
[文档]def flask_abort(code, jsonify, message=None, **kwargs): """手动抛出flask异常 :param code: 状态码 :param jsonify: 传入flask里面的jsonify对象。from flask import jsonify :param message: 返回的msg异常信息 :param kwargs: 其他jsonify参数 :return: 异常状态信息 """ if message is None: message = http_status_code.get(str(code), '') response = jsonify(msg=message, code=code, **kwargs) return response, code
[文档]def flask_register_errors(app, jsonify): """app启动处注册一个错误处理器 from flask import jsonify,Flask app = Flask(__name__) register_errors(app, jsonify) #注册异常解析器 :param app: app对象 :param jsonify: jsonify对象 """ @app.errorhandler(400) def bad_request(e): return flask_abort(400, jsonify) @app.errorhandler(401) def verify_id(e): return flask_abort(401, jsonify) @app.errorhandler(403) def forbidden(e): return flask_abort(403, jsonify) @app.errorhandler(404) def database_not_found_error_handler(e): return flask_abort(404, jsonify) @app.errorhandler(405) def method_not_allowed(e): return flask_abort(405, jsonify) @app.errorhandler(500) def internal_server_error(e): return flask_abort(500, jsonify) @app.errorhandler(Exception) def default_error_handler(e): message = f'发生未处理的异常 -> {e}' return flask_abort(0, jsonify, message=message)
if __name__ == '__main__': from flask import Flask, jsonify, abort app = Flask(__name__) flask_register_errors(app, jsonify) # 注册错误异常处理器 @app.route('/hi', methods=['POST']) def hello(): try: value = 1 / 0 return jsonify(msg='请求成功!', data=value, code=200) # 正常信息 except ValueError: return flask_abort(600, jsonify, message='被除数不能为0') # 有自定义的处理器来处理 except KeyError: code = 400 except Exception: # 其他错误 code = 500 return abort(code) # 由错误异常处理器来处理