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