[英]Java reflection and checked exceptions
我有一個方法,我想通過反思來調用。 該方法對其參數進行了一些不同的檢查,並且可以拋出NullPointer和IllegalArgument異常。
通過Reflection調用方法也會拋出需要捕獲的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
}
}
在回答原始問題時,異常中的堆棧跟蹤會有所不同。
作為替代方案,您可以讓函數捕獲這些異常並將它們重新拋出為方法(或類)特定異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.