我觉得得出这个结论不太准确。应该是先处理了try中return的结果,但不立刻返回,而是将结果缓存,然后执行finally。若finally中有return, 则直接返回finally中return的结果,若finally中没有return, 则将try中return的结果返回给调用函数。
这段代码可以证明try中的return是先于finally处理的。
- public class TestRF {
- // 定义一个静态变量x作为判断条件
- static int x = 1;
- public static void main(String[] args) {
- // 调用测试函数
- test();
- // 输出x的值作为测试结果
- System.out.println("x=" + x);
- // 若先处理return,则x的值为(1+2)*3=9
- // 若先处理finally,则x的值为1*3+2=5
- // 输出结果为9
- }
- public static int test() {
- try {
- // 使x的值加2
- return x = x + 2;
- } finally {
- // 使x的值乘3
- x = x * 3;
- }
- }
- }
复制代码 |