想知道如果finally语句在return语句之后仍然会被执行吗?
答案 0 :(得分:14)
是的,唯一的例外是try block
中的System.exit(1)
答案 1 :(得分:4)
是的,即使你return
public static void foo() {
try {
return;
} finally {
System.out.println("Finally..");
}
}
public static void main(String[] args) {
foo();
}
输出:
Finally..
答案 2 :(得分:1)
如果return语句在其关联的try块之前,则不行。
如果return语句位于关联的try块内,则为是。
public void foo(int x)
{
if (x < 0)
return; // finally block won't be executed for negative values
System.out.println("This message is never printed for negative input values");
try
{
System.out.println("Do something here");
return;
}
finally
{
System.out.println("This message is always printed as long as input is >= 0");
}
}
答案 3 :(得分:0)
是的,最终将在return
陈述之后执行。
答案 4 :(得分:0)
是的,当然。最后声明被设计为在任何情况下执行,如果执行将进入try语句。
答案 5 :(得分:0)
System.exit(int)
或Runtime.getRuntime().exit(int)
终止JVM时,finally块才会失败。
答案 6 :(得分:0)
除了其他答案之外,如果finally块中有返回,则返回后的语句将不会被执行。
finally
{
System.out.println("In finally");
if ( 1 == 1 )
return;
System.out.println("Won't get printed.);
}
在上面的片段中,显示“在最后”,而“不会打印”则不显示。