最终总是在Java中执行?
考虑到这个代码,我可以绝对确定finally
块总是执行,不管什么something()
是什么?
try {
something();
return success;
}
catch (Exception e) {
return failure;
}
finally {
System.out.println("i don't know if this will get printed out.");
}
是的, finally
会被召唤。
finally
不会被调用的唯一时间是:
System.exit()
; try
或catch
块中达到无限循环(或其他不可中断,非终止语句); 示例代码:
public static void main(String[] args) {
System.out.println(Test.test());
}
public static int test() {
try {
return 0;
}
finally {
System.out.println("finally trumps return.");
}
}
输出:
finally trumps return.
0
此外,虽然这是一种不好的做法,但如果finally块中有return语句,它将胜过常规块的任何其他返回。 也就是说,下面的块会返回false:
try { return true; } finally { return false; }
同样的事情,从finally块中抛出异常。
链接地址: http://www.djcxy.com/p/2021.html