TrendRadar/mcp_server/utils/errors.py
2025-10-20 21:41:24 +08:00

94 lines
2.6 KiB
Python

"""
自定义错误类
定义MCP Server使用的所有自定义异常类型。
"""
from typing import Optional
class MCPError(Exception):
"""MCP工具错误基类"""
def __init__(self, message: str, code: str = "MCP_ERROR", suggestion: Optional[str] = None):
super().__init__(message)
self.code = code
self.message = message
self.suggestion = suggestion
def to_dict(self) -> dict:
"""转换为字典格式"""
error_dict = {
"code": self.code,
"message": self.message
}
if self.suggestion:
error_dict["suggestion"] = self.suggestion
return error_dict
class DataNotFoundError(MCPError):
"""数据不存在错误"""
def __init__(self, message: str, suggestion: Optional[str] = None):
super().__init__(
message=message,
code="DATA_NOT_FOUND",
suggestion=suggestion or "请检查日期范围或等待爬取任务完成"
)
class InvalidParameterError(MCPError):
"""参数无效错误"""
def __init__(self, message: str, suggestion: Optional[str] = None):
super().__init__(
message=message,
code="INVALID_PARAMETER",
suggestion=suggestion or "请检查参数格式是否正确"
)
class ConfigurationError(MCPError):
"""配置错误"""
def __init__(self, message: str, suggestion: Optional[str] = None):
super().__init__(
message=message,
code="CONFIGURATION_ERROR",
suggestion=suggestion or "请检查配置文件是否正确"
)
class PlatformNotSupportedError(MCPError):
"""平台不支持错误"""
def __init__(self, platform: str):
super().__init__(
message=f"平台 '{platform}' 不受支持",
code="PLATFORM_NOT_SUPPORTED",
suggestion="支持的平台: zhihu, weibo, douyin, bilibili, baidu, toutiao, qq, 36kr, sspai, hellogithub, thepaper"
)
class CrawlTaskError(MCPError):
"""爬取任务错误"""
def __init__(self, message: str, suggestion: Optional[str] = None):
super().__init__(
message=message,
code="CRAWL_TASK_ERROR",
suggestion=suggestion or "请稍后重试或查看日志"
)
class FileParseError(MCPError):
"""文件解析错误"""
def __init__(self, file_path: str, reason: str):
super().__init__(
message=f"解析文件 {file_path} 失败: {reason}",
code="FILE_PARSE_ERROR",
suggestion="请检查文件格式是否正确"
)