from fastapi import Request, HTTPException from fastapi.responses import JSONResponse class AppException(Exception): def __init__(self, code: int, message: str, detail: any = None): self.code = code self.message = message self.detail = detail async def app_exception_handler(request: Request, exc: AppException): return JSONResponse( status_code=200, content={ "code": exc.code, "message": exc.message, "detail": exc.detail } ) async def http_exception_handler(request: Request, exc: HTTPException): return JSONResponse( status_code=exc.status_code, content={ "code": exc.status_code, "message": exc.detail } ) async def general_exception_handler(request: Request, exc: Exception): return JSONResponse( status_code=500, content={ "code": 500, "message": "服务器内部错误" } ) def register_exception_handlers(app): from fastapi import FastAPI app.add_exception_handler(AppException, app_exception_handler) app.add_exception_handler(HTTPException, http_exception_handler) app.add_exception_handler(Exception, general_exception_handler)