0
点赞
收藏
分享

微信扫一扫

InvocationTargetException异常


今天在开发时,使用反射机制调用具体的类,方法时,在方法中,我测试时抛出了一个CodeException自定义异常,但是,却被Exception catch住了,当时很疑惑,CodeException哪去了呢?

后来,才发现,通过反射机制调用的方法中,若是抛出异常,都会被转为了InvocationTargetException。而我的代码中,也没有对此异常做处理,只想catchCodeException,最终被Exception catch住了。

 

<span style="font-size:14px;">if (paymentUser != null) {
String errorCode = "420406";
String errorMessage = "该手机号已经注册";
throw new CodeException(errorCode, errorMessage);
}</span>

 

再后来,查阅资料,发现,可以通过InvocationTargetException的getTargetException()方法获得原生的异常,这才将问题解决,

 

<span style="font-size:14px;">try {//反射
MethodReflectUtil.invokeExactMethod(serviceBase, method, params, paramsType);
} catch (NoSuchMethodException e) {
throw new CodeException("2007","系统内部错误");
} catch (IllegalAccessException e) {
throw new CodeException("2008","系统内部错误");
} catch (InvocationTargetException e) {
throw new CodeException("2009",e.getTargetException().getMessage());
}</span>

这样,满足了我的将异常被CodeException所捕获饿需求。

 


 

 

 

举报

相关推荐

0 条评论