为了账号安全,请及时绑定邮箱和手机立即绑定

什么可能导致java.lang.reflect.InvocationTargetException?

什么可能导致java.lang.reflect.InvocationTargetException?

什么可能导致java.lang.reflect.InvocationTargetException?好吧,我试图理解和阅读可能导致它的原因,但我无法得到它:我在我的代码中有这个地方: try{  ..  m.invoke(testObject);  ..  } catch(AssertionError e){  ...  } catch(Exception e){  ..  }事实是,当它试图调用某个方法时,它会抛出 InvocationTargetException而不是其他预期的异常(具体而言ArrayIndexOutOfBoundsException)。因为我实际上知道调用了什么方法,所以我直接使用了这个方法代码,并为假设要抛出的行添加了一个try-catch块ArrayIndexOutOfBoundsException,它确实ArrayIndexOutOfBoundsException按预期抛出。然而,当它上升时它以某种方式改变,InvocationTargetException并且在上面的代码中,catch(Exception e) e InvocationTargetException并不ArrayIndexOutOfBoundsException 像预期的那样。什么可能导致这样的行为或我如何检查这样的事情?
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

您通过使用反射调用方法添加了额外的抽象级别。反射层包装了一个异常InvocationTargetException,它允许您区分实际由反射调用中的失败引起的异常(例如,您的参数列表无效)和被调用方法中的失败。

只需打开原因InvocationTargetException,你就会得到原来的原因。


查看完整回答
反对 回复 2019-08-15
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

如果是,则抛出异常

InvocationTargetException - 如果基础方法抛出异常。

因此,如果使用反射API调用的方法抛出异常(例如运行时异常),则反射API会将异常包装到InvocationTargetException


查看完整回答
反对 回复 2019-08-15
?
弑天下

TA贡献1818条经验 获得超8个赞

使用该getCause()方法InvocationTargetException检索原始异常。


查看完整回答
反对 回复 2019-08-15
  • 3 回答
  • 0 关注
  • 59008 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信