1

我有一个要执行的测试。无论它通过还是抛出错误,我都想关闭它打开的案例。我在类 String theCase = null; 的顶部有 然后在 executeText() 中,一旦案例打开,我就设置它。

所以我这样做了:

try {
    executeTest(tContext);
} catch (Throwable t) {
    throw t;
} finally {
    if (theCase != null) {
      closeCase(user, theCase);
    }
}

我想知道。我需要接球(Throwable t)吗?我仍然希望抛出错误,但首先我希望它关闭案例。如果我不抓住它并扔它,最后会不会扔它?还是不会被捕获并抛出异常而不执行finally?最后我有点不清楚。

4

2 回答 2

2

我需要接球(Throwable t)吗?

不,你没有。

事实上,这是有害的,因为如果你Throwable像这样捕获和抛出,那么对于某些版本的 Java,你需要将封闭方法声明为throws Throwable... 等等。(这是 Java 8,IIRC 中的地址。)

于 2016-03-31T16:05:51.323 回答
1

无论是否抛出异常,或者是否从 catch 块中重新抛出异常,都将执行 finally。

于 2016-03-31T16:03:21.713 回答