非法参数异常:对象不是声明类的实例。

7

"foo"异常为什么没有被抛出,但是后续调用invoke()时会抛出下面的异常?

if (method.getDeclaringClass() != object.getClass())
    throw new RuntimeException("foo");

method.invoke(object);

抛出异常:

java.lang.IllegalArgumentException: 对象不是声明类的实例 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


1
你能提供更多细节吗?例如类的定义? - iny
更多而不是移动,当然。 - iny
1个回答

13

问题出在 method.invoke() 调用上,它并不是直接抛出异常的。目标方法同样使用了 invoke,并抛出了异常,所以才会一层层向上传递。

教训:需要单独处理 InvocationTargetException 异常。


8
一定要查看完整的堆栈跟踪。 - Joachim Sauer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接