【译】StackOverflow——Java 中的 finally 代码块是否总会被执行?
问题
有一个 try/catch 代码块,其中包含一个打印语句。finally代码块总会被调用么?
示例:
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()
后 - 其他线程干扰了现在运行的线程(通过
interrupt
方法) - 如果 JVM 已经“撞毁”了
- 当你使用
-
//示例代码
class Test
{
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
Answered by Kevin
本文为博主辛苦创作,转载请注明 http://honoka.cnblogs.com。