我试图拦截GRPC存根引发的异常io.grpc.StatusRuntimeException,并将它们转换为RESt异常。我需要实现ClientInterceptor不确定如何?
答案 0 :(得分:0)
你不能在拦截器中。 gRPC存根和核心库将重新映射到StatusRuntimeException的异常。拦截器旨在让您修改请求和响应,但仍然通过gRPC API浮出水面。
您可以编写自己的存根包装器(可能使用AbstractStub)来重新映射这些异常。
答案 1 :(得分:0)
我遇到了同样的问题,并且无法完成,因为onMessage方法会将任何throwable捕获到StatusRuntimException中,并且状态将被取消。
https://github.com/grpc/grpc-java/issues/3434
所以在我的情况下,服务器和客户端应该使用某种标准代码(HTTP CODE)和消息。所以在服务层,检查响应代码!= 200然后从代码和服务器消息中抛出你的异常
我的帖子也被Carl Mastrangelo回复了:)