JAVA 反射类 捕获异常 method.invoke方法如何捕获异常

  1. try{
  2.  
    Method.invoke(pam1,pam2);
  3.  
    }catch(Exception e) {
  4.  
    throw new Exception (e.getMessage());//此处输出为null
  5.  
    }

普通的异常捕获是捕获不到invoke方法中的异常的。其实java认为用反射来调用方法时,jvm不能在编译期间确定方法的throws 类型,所以方法可能抛出的异常jvm也不能动态确定其类型,而统一抛出InvocationTargetException。

我们采用下面方法捕获异常:

  1.  
    try{
  2.  
    Method.invoke(pam1,pam2);
  3.  
    }catch(Exception e) {
  4.  
    InvocationTargetException targetEx = (InvocationTargetException)ex;
  5.  
    Throwable trowEx = targetEx .getTargetException();
  6.  
    throw new Excetption ("异常:"+trowEx .getMessage());
  7.  
    }
原文地址:https://www.cnblogs.com/xiami2046/p/13911654.html