File size: 1,061 Bytes
565a379
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from enum import Enum

class ErrorCodes(str, Enum):
    INTERNAL_ERROR = "ERR_001"
    INPUT_VALIDATION_ERROR = "ERR_002"
    RESOURCE_NOT_FOUND = "ERR_003"
    DEPENDENCY_ERROR = "ERR_004"
    GEMINI_ERROR = "ERR_005"
    RATE_LIMIT_EXCEEDED = "ERR_006"

ERROR_MESSAGES = {
    ErrorCodes.INTERNAL_ERROR: "An unexpected internal error occurred.",
    ErrorCodes.INPUT_VALIDATION_ERROR: "The input provided is invalid.",
    ErrorCodes.RESOURCE_NOT_FOUND: "The requested resource was not found.",
    ErrorCodes.DEPENDENCY_ERROR: "A downstream service is currently unavailable.",
    ErrorCodes.GEMINI_ERROR: "Unable to generate a solution at this time.",
    ErrorCodes.RATE_LIMIT_EXCEEDED: "Too many requests. Please try again later."
}

class AppError(Exception):
    def __init__(self, code: ErrorCodes, message: str = None, original_exception: Exception = None):
        self.code = code
        self.message = message or ERROR_MESSAGES.get(code, "Unknown Error")
        self.original_exception = original_exception
        super().__init__(self.message)