我有一個方法,我想通過反射調用。 該方法對其參數進行一些各種檢查,並可以拋出NullPointer和IllegalArgument異常。Java反射和檢查異常
通過反射調用方法還可以拋出需要捕獲的IllegalArgument和NullPointer異常。有沒有辦法確定異常是由Invoke反射方法還是方法本身造成的?
我有一個方法,我想通過反射調用。 該方法對其參數進行一些各種檢查,並可以拋出NullPointer和IllegalArgument異常。Java反射和檢查異常
通過反射調用方法還可以拋出需要捕獲的IllegalArgument和NullPointer異常。有沒有辦法確定異常是由Invoke反射方法還是方法本身造成的?
如果方法本身拋出異常,那麼它將被封裝在InvocationTargetException中。
你的代碼可能看起來像這樣
try
{
method . invoke (args) ;
}
catch (IllegalArgumentException cause)
{
// reflection exception
}
catch (NullPointerException cause)
{
// reflection exception
}
catch (InvocationTargetException cause)
{
try
{
throw cause . getCause () ;
}
catch (IllegalArgumentException c)
{
// method exception
}
catch (NullPointerException c)
{
//method exception
}
}
在回答原來的問題,在異常堆棧跟蹤會有所不同。
作爲替代方案,您可以讓函數捕獲這些異常並將它們重新拋出爲方法(或類)的特定異常。
該異常稱爲'InvocationTargetException',而不是'MethodInvocationException'。 – 2012-01-29 00:30:03
@Stephen C好的。 – emory 2012-01-29 17:27:02