假设我在下面声明了一个方法foo().
public class Foo
{
public static void foo() {throw new UnsupportedOperationException();}
}
Run Code Online (Sandbox Code Playgroud)
然后我有使用反射调用该方法的代码:
Foo.class.getMethod("foo").invoke();
Run Code Online (Sandbox Code Playgroud)
这将抛出InvocationTargetException而不是UnsupportedOperationException实际抛出的方法.
我该如何找回真正的例外(即,将抛出UnsupportedOperationException)与Java的反射?
适用于Javadoc InvocationTargetException状态
InvocationTargetException是一个已检查的异常,它包装被调用的方法或构造函数抛出的异常.
只需打电话InvocationTargetException#getCause()就可以获得包装好的异常(或者getTargetException()如果你想成为老派).