标准化错误码
Kumo 产品是一个基于 MACH 原则的大规模系统,采用多层 API 设计。为了规范返回状态,我们尽量减少错误码数量,并降低使用复杂性。
Status 使用 turbo::StatusCode 返回错误,该枚举类型表示无错误(OK)或某种错误情况。
错误码
下表列出了可用于选择合适错误码的情况,请选择最适合的具体错误码。
| 情况 | 错误码 |
|---|---|
| 请求成功 | OK |
| 请求被取消,通常由调用方发起 | CANCELLED |
| 请求参数无效 | INVALID_ARGUMENT |
| 操作未在指定时间内完成 | DEADLINE_EXCEEDED |
| 请求的实体不存在 | NOT_FOUND |
| 被创建的实体已存在 | ALREADY_EXISTS |
| 调用方没有权限执行该操作 | PERMISSION_DENIED |
| 认证失败 | UNAUTHENTICATED |
| 某些基础设施资源耗尽(配额、服务器容量等) | RESOURCE_EXHAUSTED |
| 系统状态不满足操作要求 | FAILED_PRECONDITION |
| 操作中止,通常由于并发问题(如序列检查失败、事务中止等) | ABORTED |
| 发生临时性错误 | UNAVAILABLE |
| 客户端迭代过度,应停止 | OUT_OF_RANGE |
| 请求的操作未实现 | UNIMPLEMENTED |
| 内部关键不变量被破坏(需上报或升级处理的错误) | INTERNAL |
| 发生不可恢复的数据丢失或损坏 | DATA_LOSS |
| 无法确定更具体的错误码 | UNKNOWN |