簡體   English   中英

Java反射和檢查異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM