开发学院

您的位置:首页>教程>正文

教程正文

gRPC 错误处理和Debug

  本小节讲述gRPC如何处理错误,包括gRPC的内置错误处理函数。在这里可以找到不同语言的示例代码。

错误模型

  正如您在我们的概念和示例中所看到的,当gRPC呼叫成功完成时,服务器会向客户端返回OK状态(取决于代码中可能直接使用OK状态,也可能不直接使用OK状态)。但是如果呼叫没有成功会发生什么?

  如果发生错误,gRPC会返回一个错误状态代码,并显示一条可选的字符串错误消息,进一步详细说明发生了什么。gRPC客户端可以使用所有支持的语言获得错误信息。

错误状态码

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

常规错误

异常状态码
客户端应用程序取消了请求GRPC_STATUS_CANCELLED
有效期在服务器返回状态之前过期GRPC_STATUS_DEADLINE_EXCEEDED
在服务器上找不到方法GRPC_STATUS_UNIMPLEMENTED
服务器关闭GRPC_STATUS_UNAVAILABLE
服务器抛出异常(或除了返回状态代码来终止RPC之外还做了其他事情)GRPC_STATUS_UNKNOWN


网络错误

异常 状态码
有效期之内没有传输数据。也适用于在有效期之内传输一些数据并且没有检测到其他故障的情况 GRPC_STATUS_DEADLINE_EXCEEDED
在连接中断前传输了一些数据((例如,请求元数据已写入TCP连接)GRPC_STATUS_UNAVAILABLE


协议问题

异常状态码
支持压缩算法但无法解压缩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