130 lines
2.7 KiB
Python
130 lines
2.7 KiB
Python
"""
|
|
应用程序的自定义异常类。
|
|
"""
|
|
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
|