Method.invoke和exception

时间:2012-11-10 10:11:49

标签: java exception methods invoke

如果我

,如何在方法compare(T o1, T o2)中使用调用

1 个答案:

答案 0 :(得分:2)

正如奥宾指出的那样:比较器被称为非常多次!在比较器中使用慢速反射似乎是一种宏伟而光荣的自杀方式。我无法想象必须这样做(因为你不能的事实不应该将苹果与橘子比较,如果你只有苹果,你已经知道如何比较它们)!

我不明白,你为什么要这样做。如果您发布到目前为止的代码,这将更加清晰,我们可以帮助您更好!

但是,回答关于如何捕获通过反射调用的方法抛出的异常的问题:

查看Method.invoke()

的API文档

当通过抛出异常终止被调用的方法时,它明确表示抛出InvocationTargetException

  

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

所以这就是你可以做的,使用Throwable.getCause()获取原始异常:

try {
    myMethod.invoke(myArgs...);
} catch(InvocationTargetException e) {
    Throwable myOriginalException = e.getCause();
}