gpt4 book ai didi

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

转载 作者:bug小助手 更新时间:2023-10-28 10:38:15 26 4
gpt4 key购买 nike

好吧,我试图理解并阅读可能导致它的原因,但我就是无法理解:

我的代码中有这个:

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

事情是,当它试图调用某个方法时,它会抛出 InvocationTargetException 而不是其他一些预期的异常(特别是 ArrayIndexOutOfBoundsException)。 因为我实际上知道调用了什么方法,所以我直接进入了这个方法代码,并为应该抛出 ArrayIndexOutOfBoundsException 的行添加了一个 try-catch block ,它确实抛出了 ArrayIndexOutOfBoundsException 作为预期的。然而上去的时候 以某种方式更改为 InvocationTargetException 和上面的代码 catch(Exception e) e 是 InvocationTargetException 而不是 ArrayIndexOutOfBoundsException 正如预期的那样。

什么可能导致这种行为或者我如何检查这种情况?

最佳答案

您通过使用反射调用方法添加了额外的抽象级别。反射层将任何异常包装在 InvocationTargetException 中,它可以让您区分由反射调用失败引起的异常实际上(也许您的参数列表不是有效,例如)和调用的方法中的失败。

只需解开 InvocationTargetException 中的原因,您就会得到原始原因。

关于java - 什么可能导致 java.lang.reflect.InvocationTargetException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6020719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com