| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- import logging
 
- from fastapi import Request
 
- from fastapi.exceptions import RequestValidationError
 
- from starlette.exceptions import HTTPException as StarletteHTTPException
 
- from app.exceptions.exception import AuthenticationError, AuthorizationError, BaseHTTPException
 
- from app.providers.response import ErrorResponse
 
- def 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))
 
 
  |