1
2
3
4
5
6
7
8
9
public static int test(int i) {

try {
i++;
return i - 1;
} finally {
return i + 2;
}
}

上面的代码返回啥?答案是4.原因

try中有return, 会先将值暂存,无论finally语句中对该值做什么处理,最终返回的都是try语句中的暂存值。
当try与finally语句中均有return语句,会忽略try中return。