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所捕获饿需求。

 

Java技术圆桌会-微信群,欢迎大家的加入,专注技术讨论和学习。

加入的同学可以先加我微信:luxun758521 备注-圆桌会,然后拉你进群。

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值