2012-11-10 81 views

回答

2

由於奧賓指出:比較被稱爲極很多倍!在比較中使用慢速反射似乎是一種輝煌而光榮的自殺方式。我無法想象要做到這一點(僅僅是因爲你不能將與蘋果進行比較,如果你只有蘋果,你已經知道如何比較它們)!

我沒看到,爲什麼你想這樣做。如果您發佈了迄今爲止的代碼,這將更加清晰,我們可以幫助您更好!

然而,回答你關於如何捕捉通過反射調用的方法拋出的異常問題:

看那API文檔的Method.invoke()

它明確規定拋出一個InvocationTargetException的調用時方法拋出異常終止:

InvocationTargetException - 如果底層方法拋出異常。

,所以這是你可以做什麼,使用Throwable.getCause()得到原始異常:

try { 
    myMethod.invoke(myArgs...); 
} catch(InvocationTargetException e) { 
    Throwable myOriginalException = e.getCause(); 
}