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

问题:

那么,我已经尝试了解和阅读可能导致什么,但我根本无法得到它:
我在我的代码中有一些地方:

 try{
 ..
 m.invoke(testObject);
 ..
 } catch(AssertionError e){
 ...
 } catch(Exception e){
 ..
 }

事情是,当它试图调用一些方法它抛出
  InvocationTargetException而不是其他预期的异常(具体ArrayIndexOutOfBoundsException)。
 实际上我知道调用了什么方法,我直接去了这个方法代码,并为这个假设抛出ArrayIndexOutOfBoundsException的行添加了一个try-catch块,它真的像预期的那样投掷ArrayIndexOutOfBoundsException。然而当它上升
 以某种方式更改为InvocationTargetException和上述代码catch(Exception e)
 e是InvocationTargetException而不是ArrayIndexOutOfBoundsException
 如预期。
什么可能导致这样的行为或如何检查这样的事情?

回答:

通过反射来调用该方法,您已经添加了一个额外的抽象级别。反射层将InvocationTargetException中的任何异常包起来,您可以告诉异常actually由反射调用失败引起的异常(例如,您的参数列表无效)以及方法叫做。
InvocationTargetException中解开原因,你会得到原来的原因。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What could cause java.lang.reflect.InvocationTargetException?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 1 = 5