Java反射和已检查的异常



我有一个方法,我想通过反射调用它。该方法对其参数进行一些不同的检查,并可以抛出NullPointer和IllegalArgument异常。

通过反射调用方法也可能引发需要捕获的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
     }
}

在回答最初的问题时,异常中的堆栈跟踪会有所不同。

作为替代方案,您可以让函数捕获这些异常,并将它们作为方法(或类)特定的异常重新抛出。

相关内容

  • 没有找到相关文章

最新更新