# Đây là exception chung cho toàn bộ dự án class AppException(Exception): # Tạo ra class AppException kế thừa lại Exception của thư viện def __init__( self, message, status_code=400, error_code="BAD_REQUEST", payload=None ): super().__init__(message) #kế thừa thêm thuộc tính self.message = message self.status_code = status_code self.error_code = error_code self.payload = payload or {} def to_dict(self): return { "success": False, "error": self.error_code, "message": self.message, "details": self.payload } # Rồi từ thằng kế thừa lại kế thừa tiếp từ thằng AppException class BadRequestException(AppException): def __init__(self, message="Bad request", payload=None): super().__init__( message=message, status_code=400, error_code="BAD_REQUEST", payload=payload ) class NotFoundException(AppException): def __init__(self, message="Resource not found", payload=None): super().__init__( message=message, status_code=404, error_code="NOT_FOUND", payload=payload ) class ConflictException(AppException): def __init__(self, message="Resource already exists", payload=None): super().__init__( message=message, status_code=409, error_code="CONFLICT", payload=payload ) class UnprocessableEntityException(AppException): def __init__(self, message="Unprocessable entity", payload=None): super().__init__( message=message, status_code=422, error_code="UNPROCESSABLE_ENTITY", payload=payload )