天天看点

try与finally同时存在的问题

先看下列代码

public class SmallT {
    public static void main(String[] args) {
        SmallT t = new SmallT();
        int b = t.get();
        System.out.println(b);
    }

    private int get() {
        try {
            return ;
        } finally {
            return ;
        }
    }
}
           

运行结果为:2

原因:

return并不是让函数马上返回,而是return语句执行后,将把返回结果放进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。

继续阅读