终于使用没有捕获

时间:2016-03-31 15:59:53

标签: java try-catch-finally throwable

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

所以我这样做了:

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

我在想。我需要捕获(Throwable t)吗?我仍然希望抛出错误,但首先我希望它关闭案例。如果我不抓住它扔掉它,最终会不会抛出它?或者它不会被捕获并抛出异常并且不执行finally?我终于有点不清楚了。

2 个答案:

答案 0 :(得分:2)

  

我需要捕获(Throwable t)吗?

不,你没有。

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

答案 1 :(得分:1)

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