baodan/api/insurance/utils/error_handler.py

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