Skip to main contentModule errors
Source - errorf
- 返回带格式化消息的分类错误:
errs::errorf!(errs::Kind::NotFound, "user {} not found", name)
- Body
- §8.6 共享错误体:HTTP 响应体、CLI 机器格式 stderr 与 MCP
_meta.xyz.error
共用的单一形状。平铺 error 键与旧契约字节兼容,code/detail 纯增量。 - Error
- Error 是库内统一的错误类型(CodedError 的 Rust 对应物)。
kind 缺省为 Internal;用户在自己的 handler 里也可以直接返回任何
std::error::Error(由 classify 兜底分类为 Internal)。 - Rich
- §8.5 的三层可选富化上下文。
- Kind
- Kind 给错误分类。前端通过 http_status、exit_code、jsonrpc_code 把
Kind 翻译成各自渠道的错误表示。
- classify
- 沿错误链找到第一条带分类的错误并返回其 Kind:
未分类的非空错误兜底 Internal。入参需 ’static 具体错误(或经
source() 拿到的 &dyn Error + ’static)。
- error_body
- 把任意错误投射为共享错误体(spec §8.6)。消息取最内层 cause,
富化层(code/detail)从链上第一个分类载体上取。
- error_status
- HTTP 状态:显式 §8.5 status 覆盖优先,否则按 Kind 推导。
- exit_code
- 把 Kind 翻译成 CLI 进程退出码。
- from_chain
- 沿错误链找第一个分类载体(Go errors.From 的对应物)。
- http_status
- 把 Kind 翻译成自然的 HTTP 状态码。
- is_broken_pipe
- 错误链上是否为管道早关(EPIPE):CLI 出口据此静默终止(对齐 Go
进程被 SIGPIPE 终止的 128+13=141 行为),而不是打印错误体。
- jsonrpc_code
- 把 Kind 翻译成 JSON-RPC 2.0 错误码。-32000..-32099 是 JSON-RPC 与 MCP
保留给应用自定义服务端错误的区间。
- new
- 便捷构造函数(对齐 Go 的 errs.New/errs.Errorf/errs.Wrap)。
- Result
- 命令 handler 的 canonical 返回类型。