29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
"""全局异常处理器:捕获未处理异常,返回统一格式。"""
|
|
import logging
|
|
from flask import jsonify
|
|
from insurance.utils.response import ErrorCode
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def register_error_handlers(app):
|
|
"""注册全局异常处理器到 Flask app。"""
|
|
|
|
@app.errorhandler(404)
|
|
def not_found(e):
|
|
return jsonify({"code": ErrorCode.NOT_FOUND, "message": "资源不存在", "data": None}), 404
|
|
|
|
@app.errorhandler(405)
|
|
def method_not_allowed(e):
|
|
return jsonify({"code": ErrorCode.PARAM_ERROR, "message": "请求方法不支持", "data": None}), 405
|
|
|
|
@app.errorhandler(500)
|
|
def internal_error(e):
|
|
logger.exception("服务器内部错误")
|
|
return jsonify({"code": ErrorCode.SERVER_ERROR, "message": "服务器内部错误", "data": None}), 500
|
|
|
|
@app.errorhandler(Exception)
|
|
def handle_exception(e):
|
|
logger.exception(f"未处理异常: {type(e).__name__}: {e}")
|
|
return jsonify({"code": ErrorCode.SERVER_ERROR, "message": "服务器内部错误", "data": None}), 500
|