Com*_*ver 12 java scope try-catch-finally
这就是我想要做的:
try {
//code
} catch (Exception e) {
return false;
} finally {
//close resources
}
Run Code Online (Sandbox Code Playgroud)
这会有用吗?这是不好的做法吗?这样做会更好:
boolean inserted = true;
try {
//code
} catch (Exception e) {
inserted = false;
} finally {
//close resources
}
return inserted;
Run Code Online (Sandbox Code Playgroud)
JB *_*zet 23
是的,它会的.唯一可以阻止finally块执行的东西(AFAIR)是System.exit()无限循环(当然还有JVM崩溃).
总是无条件地finally执行该块,作为块的最后一件事.即使你执行它,该块仍将执行,就像发生常规异常一样.try-catch-finallyThread#stopfinally
不仅如此,如果你从中返回finally,那个返回值将会践踏任何一个try或者的返回值catch.
BTW你的第一个例子不仅很好,而且更受欢迎.在第二个例子中,读者必须追逐变量的赋值,这是一项繁琐的工作,让bug很容易漏掉.