| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | from typing import Anyfrom fastapi import HTTPExceptionclass BaseHTTPException(HTTPException):    """    基础异常    """    type: str = None    param: str = None    def __init__(        self,        status_code: int,        error_code: str,        message: str = None,        type: str = None,        param: str = None,        detail: Any = None,    ):        self.status_code = status_code        self.error_code = error_code        self.message = message        self.type = type        self.param = param        super().__init__(status_code, detail)    def __str__(self) -> str:        return f"status_code={self.status_code} error_code={self.error_code} message={self.message}"class BadRequestError(BaseHTTPException):    """    请求参数异常    """    def __init__(self, message: str, error_code: str = "bad_request"):        self.status_code = 400        self.error_code = error_code        self.message = message        self.type = "invalid_request_error"class ValidateFailedError(BaseHTTPException):    """    校验失败    """    def __init__(self, message: str = "Validation failed", error_code: str = "validation_failed"):        self.status_code = 422        self.error_code = error_code        self.message = message        self.type = error_codeclass AuthenticationError(BaseHTTPException):    """    未认证    """    def __init__(self, message: str = "Unauthorized", error_code: str = "unauthorized"):        self.status_code = 401        self.error_code = error_code        self.message = messageclass AuthorizationError(BaseHTTPException):    """    未授权    """    def __init__(self, message: str = "Forbidden", error_code: str = "forbidden"):        self.status_code = 403        self.error_code = error_code        self.message = messageclass ResourceNotFoundError(BaseHTTPException):    """    资源不存在    """    def __init__(self, message: str = "Resource not found", error_code: str = "resource_not_found"):        self.status_code = 404        self.error_code = error_code        self.message = message        self.type = "not_found_error"class InternalServerError(BaseHTTPException):    """    服务器内部异常    """    def __init__(self, message: str = "Internal Server Error", error_code: str = "internal_server_error"):        self.status_code = 500        self.message = message        self.error_code = error_code        self.type = error_codeclass ServerError(BaseException):    """    服务端异常    """    def __init__(self, message: str):        self.message = message
 |