当前位置: 首页 > 知识库问答 >
问题:

正确处理gRPC服务器运行时异常

翁翰墨
2023-03-14

我试图了解gRPC中的异常处理机制是如何工作的。

除了try-catch块之外,还有其他方法来处理运行时异常,例如服务器端的IllegalArgumentException吗?

例如,我有一些gRPC流式客户端服务,当传递的参数不满足深层次的一些断言时(在某些库中,例如,com.google.common.base.Preconditions),方法onNext抛出IllegalArgumentException。

在这种情况下,状态为的运行时异常将出现。客户端未知,但是否有另一种解决方案允许不处理此类异常,并在服务调用后将其转换为可读的状态运行时异常?

共有1个答案

董法
2023-03-14

通常,您应该捕获服务器端的所有异常,并将其转换为适当的状态RuntimeException或状态异常。但是,您可以通过在服务器上使用TransmitStatusRuntimeExceptionInterceptor类来避免这种情况,以自动转换错误。

通常不使用它的原因是,这意味着意外错误与预期错误相同。您可能不想传播异常消息,可能是因为它包含私有用户数据,而是在服务器处理程序中重写它。

 类似资料:
  • 我正在开发一个android和iOS应用程序,需要有一个RESTful服务器端。直到今天,我在eclipse上使用Jersey和RunJettyRun,但我决定开始使用新的更好的东西!我搬到了DropWizard和IntelliJ IDEA 这些是我安装的软件和我已经处理的事情:-Java 8-Maven 3.1.1-Maven和Java的环境变量。 现在,我所做的是跟随他们网站上的DropWiz

  • 我正在尝试在grpc上使用服务流和客户端上的异步存根建立一个简单的发布/订阅模式。在实现了部分流式消息返回到客户端之后,我想处理连接中断的场景。现在,我正在实现服务关闭时的部分,例如,客户端应该从连接丢失中“恢复”。 我在google/github/so上阅读并搜索了关于重试机制的内容,最后为流式传输消息的服务中的方法设置了重试策略。据我所知,当服务返回重试策略中定义的一些retryableSta

  • 我正在用C++开发双向流gRPC。我想在服务器端设置一个超时限制,如果连接超过一个阈值,就关闭连接。 但是我发现的唯一超时机制是在客户端(https://grpc.io/blog/deadlines/#c)。我找不到任何API可以用于ServerContext(https://grpc.github.io/grpc/cpp/classgrpc_1_1_server_context.html)。有人

  • 我正在学习spring batch,并试图理解在异常期间项目处理器是如何工作的。 我试图通过在我的项目处理器中为一条记录手动抛出异常来模拟异常 现在根据跳过限制,当异常被抛出时,项目处理器将重新处理块并跳过抛出错误的项目,项目写入也将所有记录插入数据库,除了一条异常记录。 这一切都很好,因为我的处理器,它只是转换为大写字母名称,它可以运行很多次,但影响很大。 其他的选择是什么?

  • 嗨,我已经在CentOS 7上安装了wine(版本wine-3.0.2)来运行我的。vbs文件。但在运行时,它得到了以下错误。 你能帮我修一下这个吗。我对此不太了解

  • 我使用eclipse在本地机器上编写了几个servlet。我在本地机器上测试了它们,一切都很好。 然后,我将我的项目导出为.war文件,并将其放在另一台计算机中tomcat的webapps目录下,我只有ssh访问权限。我重新启动了tomcat服务器,在查看了日志文件后,我发现它抛出了以下异常: 不知道这意味着什么?