【发布时间】:2011-08-26 14:47:55
【问题描述】:
好吧,我试图理解并阅读可能导致它的原因,但我就是无法理解:
我的代码中有这个:
try{
..
m.invoke(testObject);
..
} catch(AssertionError e){
...
} catch(Exception e){
..
}
事情是,当它试图调用某个方法时,它会抛出
InvocationTargetException 而不是其他一些预期的异常(特别是 ArrayIndexOutOfBoundsException)。
因为我实际上知道调用了什么方法,所以我直接进入了这个方法代码,并为应该抛出 ArrayIndexOutOfBoundsException 的行添加了一个 try-catch 块,它确实像预期的那样抛出了 ArrayIndexOutOfBoundsException。然而上去的时候
以某种方式更改为InvocationTargetException 和上面的代码catch(Exception e)
e 是 InvocationTargetException 而不是 ArrayIndexOutOfBoundsException
正如预期的那样。
什么可能导致这种行为或者我如何检查这种情况?
【问题讨论】:
-
我遇到了同样的问题,只是我很久没有意识到这是一个调用目标异常......
标签: java exception reflection invoke