110 lines
2.7 KiB
Python
110 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Algorithm Package Exceptions
|
|
算法包异常类定义
|
|
"""
|
|
|
|
|
|
class AlgorithmError(Exception):
|
|
"""算法包基础异常"""
|
|
|
|
def __init__(self, message: str, error_code: str = None, details: dict = None):
|
|
super().__init__(message)
|
|
self.message = message
|
|
self.error_code = error_code
|
|
self.details = details or {}
|
|
|
|
def __str__(self):
|
|
if self.error_code:
|
|
return f"[{self.error_code}] {self.message}"
|
|
return self.message
|
|
|
|
|
|
class ConfigError(AlgorithmError):
|
|
"""配置相关异常"""
|
|
pass
|
|
|
|
|
|
class AIServiceError(AlgorithmError):
|
|
"""AI服务异常"""
|
|
|
|
def __init__(self, message: str, error_code: str = None, details: dict = None, retryable: bool = False):
|
|
super().__init__(message, error_code, details)
|
|
self.retryable = retryable
|
|
|
|
|
|
class ContentGenerationError(AlgorithmError):
|
|
"""内容生成异常"""
|
|
pass
|
|
|
|
|
|
class PosterGenerationError(AlgorithmError):
|
|
"""海报生成异常"""
|
|
pass
|
|
|
|
|
|
class DocumentProcessingError(AlgorithmError):
|
|
"""文档处理异常"""
|
|
pass
|
|
|
|
|
|
class ResourceNotFoundError(AlgorithmError):
|
|
"""资源未找到异常"""
|
|
pass
|
|
|
|
|
|
class ValidationError(AlgorithmError):
|
|
"""验证异常"""
|
|
pass
|
|
|
|
|
|
class TimeoutError(AlgorithmError):
|
|
"""超时异常"""
|
|
pass
|
|
|
|
|
|
class RateLimitError(AIServiceError):
|
|
"""API频率限制异常"""
|
|
|
|
def __init__(self, message: str = "API rate limit exceeded", retry_after: int = None):
|
|
super().__init__(message, "RATE_LIMIT", {"retry_after": retry_after}, retryable=True)
|
|
self.retry_after = retry_after
|
|
|
|
|
|
class QuotaExceededError(AIServiceError):
|
|
"""配额超限异常"""
|
|
|
|
def __init__(self, message: str = "API quota exceeded"):
|
|
super().__init__(message, "QUOTA_EXCEEDED", retryable=False)
|
|
|
|
|
|
class ModelNotFoundError(AIServiceError):
|
|
"""模型未找到异常"""
|
|
|
|
def __init__(self, model_name: str):
|
|
message = f"AI model not found: {model_name}"
|
|
super().__init__(message, "MODEL_NOT_FOUND", {"model": model_name}, retryable=False)
|
|
|
|
|
|
class NetworkError(AIServiceError):
|
|
"""网络异常"""
|
|
|
|
def __init__(self, message: str = "Network connection failed"):
|
|
super().__init__(message, "NETWORK_ERROR", retryable=True)
|
|
|
|
|
|
class CrawlingError(AlgorithmError):
|
|
"""爬虫相关错误"""
|
|
pass
|
|
|
|
|
|
class KeywordAnalysisError(ContentGenerationError):
|
|
"""关键词分析错误"""
|
|
pass
|
|
|
|
|
|
class ContentAnalysisError(ContentGenerationError):
|
|
"""内容分析错误"""
|
|
pass |