"""全局异常 + 统一错误响应。""" from fastapi import FastAPI, Request, status from fastapi.responses import JSONResponse class AppError(Exception): """业务异常基类。子类在各域 exceptions.py 中定义。""" status_code: int = status.HTTP_400_BAD_REQUEST detail: str = "bad request" def __init__(self, detail: str | None = None): self.detail = detail or self.detail super().__init__(self.detail) class NotFoundError(AppError): status_code = status.HTTP_404_NOT_FOUND detail = "not found" def register_exception_handlers(app: FastAPI) -> None: @app.exception_handler(AppError) async def app_error_handler(_: Request, exc: AppError) -> JSONResponse: return JSONResponse(status_code=exc.status_code, content={"detail": exc.detail})