| 123456789101112131415161718192021222324252627282930313233343536373839404142 | import loggingfrom fastapi import Requestfrom fastapi.exceptions import RequestValidationErrorfrom starlette.exceptions import HTTPException as StarletteHTTPExceptionfrom app.exceptions.exception import AuthenticationError, AuthorizationError, BaseHTTPExceptionfrom app.providers.response import ErrorResponsedef register(app):    @app.exception_handler(AuthenticationError)    async def authentication_exception_handler(request: Request, e: AuthenticationError):        """        认证异常处理        """        return ErrorResponse(e.status_code, e.error_code, e.message)    @app.exception_handler(AuthorizationError)    async def authorization_exception_handler(request: Request, e: AuthorizationError):        """        权限异常处理        """        return ErrorResponse(e.status_code, e.error_code, e.message)    @app.exception_handler(BaseHTTPException)    async def business_exception_handler(request: Request, e: BaseHTTPException):        """        其他业务异常        """        logging.exception(e)        return ErrorResponse(e.status_code, e.error_code, e.message, e.type, e.param)    @app.exception_handler(StarletteHTTPException)    async def starlette_http_exception_handler(request: Request, e: StarletteHTTPException):        logging.exception(e)        return ErrorResponse(e.status_code, "http_error", e.detail)    @app.exception_handler(RequestValidationError)    async def validation_exception_handler(request: Request, e: RequestValidationError):        logging.exception(e)        return ErrorResponse(422, "request_validation_error", str(e))
 |