我有一个我想要执行的测试。无论是通过还是抛出错误,我都要关闭它打开的案例。我在类String的顶部有theCase = null; 然后在executeText()中,我在案例打开后设置它。
所以我这样做了:
try {
executeTest(tContext);
} catch (Throwable t) {
throw t;
} finally {
if (theCase != null) {
closeCase(user, theCase);
}
}
我在想。我需要捕获(Throwable t)吗?我仍然希望抛出错误,但首先我希望它关闭案例。如果我不抓住它扔掉它,最终会不会抛出它?或者它不会被捕获并抛出异常并且不执行finally?我终于有点不清楚了。
答案 0 :(得分:2)
我需要捕获(Throwable t)吗?
不,你没有。
事实上,它是有害的,因为如果你像这样捕获并抛出Throwable
,那么对于某些版本的Java,你需要将封闭方法声明为throws Throwable
......等等。 (这是Java 8,IIRC的地址。)
答案 1 :(得分:1)
最终将执行,无论是否抛出异常,或者是否从catch块重新抛出异常。