Skip to content

⚠️ 错误模型

错误分类

ICP Skills 把错误分为三类,调用方可按类型决定是否重试:

类别含义可重试退出码
ErrInput输入非法(空公司名、畸形域名)2
ErrUpstream上游数据源错误(限速、5xx、超时)✅ 部分可3
ErrConfig配置/凭证缺失4

外加一类 ErrPartial:查询部分成功、部分降级,结果带 confidence=low

Go 错误用法

go
import "github.com/cyberspacesec/go-icp/sdk"

err := client.QueryCompany(ctx, name).Err()
switch {
case errors.Is(err, sdk.ErrInput):
    // 输入问题,不要重试
case errors.Is(err, sdk.ErrUpstream):
    // 上游问题,可指数退避重试
case errors.Is(err, sdk.ErrConfig):
    // 凭证/配置缺失
}

重试语义

  • ErrUpstream 中区分「可重试」(限速、临时 5xx)与「终态」(鉴权失败、配额永久耗尽)
  • 重试由编排层统一执行,调用方无需手写
  • 🛡️ 反爬与限速

降级 ≠ 报错

主路径失败但补全路径成功时,不返回错误,返回带 confidence=low 的结果 + 一条 warning。调用方按需过滤。

CLI 退出码

退出码含义
0成功
2输入错误
3上游错误
4配置错误
5部分成功(有降级)

详见 📤 退出码❌ 错误码

📚 延伸阅读

Released under the MIT License.