[英]Handling gRPC server runtime exceptions in a proper way
我试图找出gRPC中的异常处理机制是如何工作的。
除了try-catch块还有其他方法来处理服务器端的运行时异常,例如IllegalArgumentException
吗?
例如,我有一些gRPC流客户端服务,其中onNext
方法抛出IllegalArgumentException
, onNext
在传递参数不满足某些断言的情况下(在某些库中,例如com.google.common.base.Preconditions
)。
在这种情况下,客户端会有StatusRuntimeException
和Status.UNKNOWN
但是有另一个解决方案,它允许不处理这些异常并在服务调用后将它们转换为可读的StatusRuntimeException
吗?
通常,您应该捕获服务器端的所有异常,并将它们转换为正确的StatusRuntimeException
或StatusException
。 但是,您可以通过将TransmitStatusRuntimeExceptionInterceptor
类与服务器一起使用来自动为您转换错误,从而避免这种情况。
通常不使用它的原因是因为它意味着意外错误看起来与预期错误相同。 您可能不希望传播异常消息,可能是因为它具有私有用户数据,而是在您的Server处理程序中重写它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.