【发布时间】:2013-04-08 11:49:44
【问题描述】:
我有一个简单的 Java 类,如下所示:
public class Test {
private String s;
public String foo() {
try {
s = "dev";
return s;
}
finally {
s = "override variable s";
System.out.println("Entry in finally Block");
}
}
public static void main(String[] xyz) {
Test obj = new Test();
System.out.println(obj.foo());
}
}
这段代码的输出是这样的:
Entry in finally Block
dev
为什么s 没有在finally 块中被覆盖,而是控制打印输出?
【问题讨论】:
-
你应该把return语句放在finally块上,跟我重复,finally块总是被执行
-
在尝试阻止它返回 s
-
语句的顺序很重要。在更改其值之前,您将返回
s。 -
但是,you can return the new value in the
finallyblock,不像在 C# 中(你不能)
标签: java try-finally