Files
YaoXiang/backend/app/core/exceptions.py
T
2026-06-15 14:50:15 +08:00

47 lines
1.2 KiB
Python

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)