""" 应用程序的自定义异常类。 """ from typing import Optional, Dict, Any class AppException(Exception): """ 所有应用程序异常的基础异常类。 """ code: str = "INTERNAL_ERROR" message: str = "An internal error occurred" status_code: int = 500 def __init__( self, message: Optional[str] = None, details: Optional[Dict[str, Any]] = None, status_code: Optional[int] = None, ): self.message = message or self.message self.details = details or {} if status_code: self.status_code = status_code super().__init__(self.message) def to_dict(self) -> Dict[str, Any]: """ 将异常转换为字典用于 JSON 响应。 Returns: Dict[str, Any]: 异常数据 """ return { "code": self.code, "message": self.message, "details": self.details, } class ResourceNotFoundError(AppException): """ 当请求的资源未找到时引发的异常。 """ code = "RESOURCE_NOT_FOUND" message = "Resource not found" status_code = 404 class InvalidConfigError(AppException): """ 当模型配置无效时引发的异常。 """ code = "INVALID_CONFIG" message = "Invalid configuration" status_code = 400 class ExternalAPIError(AppException): """ 当外部 API 调用失败时引发的异常。 """ code = "EXTERNAL_API_ERROR" message = "External API error" status_code = 502 class DatabaseError(AppException): """ 当数据库操作失败时引发的异常。 """ code = "DATABASE_ERROR" message = "Database operation failed" status_code = 500 class ValidationError(AppException): """ 当输入验证失败时引发的异常。 """ code = "VALIDATION_ERROR" message = "Input validation failed" status_code = 400 class DuplicateResourceError(AppException): """ 当尝试创建重复资源时引发的异常。 """ code = "DUPLICATE_RESOURCE" message = "Resource already exists" status_code = 409 class VectorStoreError(AppException): """ 当向量存储操作失败时引发的异常。 """ code = "VECTOR_STORE_ERROR" message = "Vector store operation failed" status_code = 500 class EmbeddingError(AppException): """ 当嵌入向量生成失败时引发的异常。 """ code = "EMBEDDING_ERROR" message = "Embedding generation failed" status_code = 500 class AgentExecutionError(AppException): """ 当代理执行失败时引发的异常。 """ code = "AGENT_EXECUTION_ERROR" message = "Agent execution failed" status_code = 500