捕获反射执行方法抛出的异常

我们在使用反射调用方法时候,只能捕获到反射抛出的异常,如果是被执行的方法抛出的异常又该如何捕获呢?

 try {
Object result = method.invoke(instance, param.toString());
      return result;
} catch (Exception e) {
      e.printStackTrace();
}

如果invoke()方法抛出异常,上面代码是可以捕获,可是如果是Method对应的方法异常怎么办呢?

try {
            Object result = method.invoke(instance, param.toString());
            return RestResult.success(result);
        } catch (Exception e) {
            e.printStackTrace();
            if(e.getCause() instanceof ServiceException){
                logger.info(e.getCause().getMessage());

            }

        }

上面代码中getCause()返回此异常的原因(尝试加载类时发生错误引发的异常;否则返回 null);也就是说,当反射执行的方法中抛出异常必然也会造成invoke抛出异常,可通过getCause()来获取引起当前异常的异常。

这个目前我也基本上在反射执行方法的时候用上。

© 2019 FunGa技术札记 All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero