public String test() {
String s = "a";
try {
new Long("xyz");
} catch (NumberFormatException e) {
s += "a";
return s;
} finally {
s += "a";
}
return s;
}
@Test
public void test2() {
System.out.println(test());
}
输出是aa;try块中的return语句执行成功后,并不马上返回,而是继续执行finally块中的语句,但是返回的还是aa
public String test() {
String s = "a";
try {
new Long("xyz");
} catch (NumberFormatException e) {
s += "a";
return s;
} finally {
s += "a";
return s;
}
}
@Test
public void test2() {
System.out.println(test());
}
输出是aaa;如果此处存在return语句,则在此直接返回。
这篇博客探讨了Java中try-catch-finally语句块如何影响返回值。在第一个示例中,try块中的return语句执行后,仍然会执行finally块中的语句,导致返回值为'aa'。而在第二个示例中,finally块内添加了return语句,此时会直接返回'aaa',说明finally块内的return会覆盖之前try和catch中的return。
2216

被折叠的 条评论
为什么被折叠?



