错误处理 (Error Handling)
NodeGet 项目的 API 使用统一的错误处理机制,确保所有 RPC 调用都能提供一致的错误响应格式。
错误响应格式
所有 API 错误都遵循以下 JSON 结构:
json
{
"error": {
"code": <error_code>,
"message": "<error_message>",
"data": <optional_error_data>
}
}NodegetError 枚举
NodeGet 定义了一个统一的错误枚举 NodegetError,包含以下错误类型:
错误类型
ParseError(String) - 解析错误 (错误码: 101)
- 当请求数据解析失败时抛出
InvalidInput(String) - 输入无效 (错误码: 108)
- 当请求参数格式合法但业务上无效时抛出
PermissionDenied(String) - 权限拒绝 (错误码: 102)
- 当用户没有执行操作的足够权限时抛出
DatabaseError(String) - 数据库错误 (错误码: 103)
- 当数据库操作失败时抛出
AgentConnectionError(String) - 代理连接错误 (错误码: 104)
- 当无法连接到代理节点时抛出
NotFound(String) - 未找到 (错误码: 105)
- 当请求的资源不存在时抛出
UuidNotFound(String) - UUID 未找到 (错误码: 106)
- 当请求的 UUID 不存在时抛出
ConfigNotFound(String) - 配置未找到 (错误码: 107)
- 当请求的配置不存在时抛出
SerializationError(String) - 序列化错误 (错误码: 101)
- 当数据序列化/反序列化失败时抛出
IoError(String) - IO 错误 (错误码: 101)
- 当输入/输出操作失败时抛出
Other(String) - 其他错误 (错误码: 999)
- 用于其他未分类的错误
JsonError 结构体
为了统一错误响应格式,NodeGet 使用 JsonError 结构体:
rust
pub struct JsonError {
pub error_id: i128, // 错误代码
pub error_message: String, // 错误消息
}错误代码映射
101- ParseError / SerializationError / IoError102- PermissionDenied103- DatabaseError104- AgentConnectionError105- NotFound106- UuidNotFound107- ConfigNotFound108- InvalidInput999- Other
错误处理示例
成功响应
json
{
"result": {
// 成功的数据
}
}错误响应
json
{
"error": {
"code": 102,
"message": "Permission denied: Insufficient permissions to read requested task types"
}
}