考虑以下方法:
public boolean test() {
try {
return false;
} finally {
return true;
}
}
为什么会返回true
?我知道finally部分总是被执行,但它应该首先执行try部分并返回true并退出方法吗?有人可以用简单的话来解释为什么Java确实像这样吗?我认为这是违反直觉的。
答案 0 :(得分:2)
本质上,finally块的契约是无论try块中发生什么,它总是被执行。这就是返回true
的原因。
进一步阅读:http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html
答案 1 :(得分:2)
由于“finally”总是执行,所以在放弃方法之外的控制流之前执行它,即返回。
但是如果JVM在try块中停止,最终将不会被执行。