在Thrift调用中获取UndeclaredThrowableException

时间:2014-09-11 09:25:47

标签: java exception thrift dynamic-proxy

我收到了这个

java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy1.getMyObject(Unknown Source)

我在评论中发布了一篇类似的帖子herethis文章。

但是在这种情况下,我使用ThriftClient使用com.twitter.common.thrift.ThriftFactory<T>

创建myThriftClient.getMyObject() 来调用以下方法
{{1}}

有没有办法知道这个错误的实际原因是什么?我是否需要在节俭的代码中更改某些内容?

2 个答案:

答案 0 :(得分:0)

看起来这根本不是一个Thrift问题......好像它在你正在使用的图书馆内(&#34; twitter commons&#34;或者其他)。我假设他们的库正在尝试为您的接口创建一个动态代理,但是您的接口无法处理被抛出的任何已检查异常。

您可能想尝试声明&#34;抛出java.lang.Throwable&#34;在您的界面上暂时,如果您在确定基础异常时遇到问题并且无法修复调用处理程序本身的实现。如果你这样做,至少根本原因不会被UndeclaredThrowableException埋没。

或者,只需在图形调试器中设置断点,然后逐步调用以查看程序的状态。

答案 1 :(得分:0)

这里的问题是我的客户端线程正在向Thread.interrupt()线程发送myThriftClient

所以在这种情况下,Caller类中的DeadlineCaller类(在我的情况下是Thrift)被中断,导致InterruptedException或{{1它被捆绑并在堆栈中显示为TimeoutException