-
try{
-
Method.invoke(pam1,pam2);
-
}catch(Exception e) {
-
throw new Exception (e.getMessage());//此处输出为null
-
}
普通的异常捕获是捕获不到invoke方法中的异常的。其实java认为用反射来调用方法时,jvm不能在编译期间确定方法的throws 类型,所以方法可能抛出的异常jvm也不能动态确定其类型,而统一抛出InvocationTargetException。
我们采用下面方法捕获异常:
-
try{
-
Method.invoke(pam1,pam2);
-
}catch(Exception e) {
-
InvocationTargetException targetEx = (InvocationTargetException)ex;
-
Throwable trowEx = targetEx .getTargetException();
-
throw new Excetption ("异常:"+trowEx .getMessage());
-
}