捕获调用方法中的嵌套错误 Java

Catching nested errors in invoked methods Java

首先我不太确定这种行为的确切原因是什么,所以标题可能是错误的。

我有一个 "MainClass",它通过使用 Method.invoke() 方法创建 "SubClass" 的新 Object(使用 a 是因为有几个 "SubClasses"所有人都有相同的方法,如果您有更好的方法来解决这个问题,我将不胜感激)。由于需要捕获 invoke() 方法抛出的异常,因此我在其周围设置了 try {} catch () {}。现在看来,当 "SubClasses" 之一抛出错误并且它不直接在 try 块下面的代码中时,它不会捕获它,而是 "MainClass" 捕获它。

我不知道这是否是预期的行为,但我希望有一种方法可以防止这种情况发生。

示例:

  1. MainClass调用SubClass的方法
  2. 方法尝试在 try 块中执行此操作 new Gson().fromJson("Test",ArrayList.class);
  3. MainClass 捕获异常

显然问题不在于 Gson。发生的事情是

try {
    new Gson().fromJson(...);
}
catch (Exception e) {
    logThatError();
}

正确捕获了 Gson 抛出的异常,但 logThatError() 也引发了异常。