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());
}