2014-09-11 47 views
0

獲得UndeclaredThrowableException中我得到這個在舊貨電話

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

我經歷了類似的帖子herethis文章張貼在一個評論去。

但在這種情況下,使用其上創建一個ThriftClient的我打電話下面的方法使用com.twitter.common.thrift.ThriftFactory<T>

myThriftClient.getMyObject() 

有沒有知道什麼是實際原因這個錯誤的方法嗎?我是否需要改變節儉代碼中的某些內容?

+0

「*我需要改變節儉代碼中的某些內容嗎?*」 - 如果您認爲在Thrift代碼(無論是生成的還是庫)中發現錯誤,請提交包含測試用例的JIRA門票。如果您有補丁提議或想法,請將其包含在內。謝謝! – JensG 2014-09-11 12:59:33

回答

0

看起來好像這不是一個Thrift問題......它好像是你正在使用的庫(「twitter commons」或其他)。我認爲他們的庫正在試圖爲你的接口創建一個動態代理,但是你的接口無法處理任何檢查的異常。

如果您在確定基礎異常時遇到問題並且無法修復調用處理程序本身的實現,您可能需要臨時在接口上暫時聲明「throws java.lang.Throwable」。如果你這樣做,至少根本原因不會被UndeclaredThrowableException掩蓋。

或者,只需在圖形化調試器中設置一個斷點,然後逐步調用以查看程序的狀態。

0

這裏的問題是,我的客戶端線程發送Thread.interrupt()myThriftClient線程。

因此,在這種情況下,Caller類(這在我的情況下是DeadlineCaller)的Thrift類內部被中斷導致在InterruptedException或將其捆紮並作爲在堆棧UndeclaredThrowableEception顯示的TimeoutException