java反射中捕获特定异常
给定一个具有静态方法的类并引发一些异常
class Foo {
public static void doThis() throws CannotDoThisException {
//do something
}
}
我使用下面的反射来调用doThis方法
public class Bar {
Class c = Class.forName("Foo");
Method m = c.getDeclaredMethod("doThis",null);
try {
m.invoke(null,null);
} catch (CannotDoThisException e) {
//Compiler says this is unreachable block.
}
}
如何捕获异常CannotDothis异常
# 1 楼答案
无法捕获该异常的原因是
Method::invoke
(javadoc)不会抛出它如果通过
invoke
调用的方法抛出任何异常,反射层将捕获它,然后创建并抛出一个InvocationTargetException
(javadoc),原始异常作为异常的cause
所以这就是你需要做的: