Skip to main content
Version: nightly 🚧

规范错误代码

Kumo产品是一个庞大的体系,基于MACH理念,设计多层次的API,为了规范这些返回的状态,我们尽量减少错误码的数量,减少使用的复杂性。

Status 使用 turbo::StatusCode 返回错误,这是一个枚举类型指示没有错误(正常)或出现错误情况。

错误代码

这是一个错误码表,您可以使用它来选择适当的错误。选最多的适用的特定错误代码。

条件错误码
请求成功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
info

在“FAILED_PRECONDITION”、“ABORTED”和“UNAVAILABLE”之间进行选择 是微妙的,特别是对于调用者应该重试的策略 使用。一些可能对服务实施者有所帮助的准则:* 如果客户端可以仅重试失败的调用,请使用“UNAVAILABLE”。* 如果客户端应该在更高的事务级别重试,则使用“ABORTED”(例如当客户端指定的测试和设置失败时,表明客户端 应重新启动读取-修改-写入序列)。* 如果客户端不应重试,直到系统恢复正常,请使用“FAILED_PRECONDITION” 状态已被明确修复。例如,如果“rmdir”失败,因为 目录非空,应该返回 FAILED_PRECONDITION 客户端不应重试,除非文件已从 目录。* 如果输入值符合以下条件,请使用“INVALID_ARGUMENT”(而不是“OUT_OF_RANGE”) 永远不会被接受。应为以下输入保留“OUT_OF_RANGE” 仅由于当前系统状态而超出范围。