错误处理和调试

错误处理

此页面描述了gRPC如何处理错误,包括gRPC的内置错误代码。 可以在此处找到不同语言的示例代码。

错误模型

正如您在我们的概念文档和示例中所看到的,当gRPC调用成功完成时,服务器会向客户端返回OK状态(取决于语言,OK状态可能会或可能不会直接在您的代码中使用)。 但如果通话不成功会怎样?

如果发生错误,gRPC会返回其错误状态代码之一,并带有可选的字符串错误消息,该消息提供有关所发生情况的更多详细信息。 所有支持的语言中的gRPC客户端都可以使用错误信息。
错误状态代码

gRPC在各种情况下引发错误,从网络故障到未经认证的连接,每个连接都与特定的状态代码相关联。 所有gRPC语言都支持以下错误状态代码。

一般错误

GRPC_STATUS_CANCELLED 客户端应用程序取消了请求

GRPC_STATUS_DEADLINE_EXCEEDED 截止日期在服务器返回状态之前到期

GRPC_STATUS_UNIMPLEMENTED 在服务器上找不到方法

GRPC_STATUS_UNAVAILABLE 服务器关闭

GRPC_STATUS_UNKNOWN 服务器抛出异常(或者做了除了返回状态代码以终止RPC之外的其他操作)

网络故障

GRPC_STATUS_DEADLINE_EXCEEDED 在截止日期到期之前没有传输数据。 也适用于在截止日期到期之前传输某些数据且未检测到其他故障的情况

GRPC_STATUS_UNAVAILABLE 在连接中断之前传输了一些数据(例如,请求元数据已写入TCP连接)

协议错误

GRPC_STATUS_INTERNAL 无法解压缩但支持压缩算法

GRPC_STATUS_UNIMPLEMENTED 客户端使用的压缩机制不受服务器支持

GRPC_STATUS_RESOURCE_EXHAUSTED 达到流量控制资源限制

GRPC_STATUS_INTERNAL 流量控制协议违规

GRPC_STATUS_UNKNOWN 解析返回状态时出错

GRPC_STATUS_UNAUTHENTICATED 未经身份验证:凭据无法获取元数据

GRPC_STATUS_UNAUTHENTICATED 权限元数据中的主机集无效

GRPC_STATUS_INTERNAL 解析响应协议缓冲区时出错

GRPC_STATUS_INTERNAL 解析请求协议缓冲区时出错