int getInt(){
    int i = 0;
    try{
        i = 1;
        return i;
    }
    finally{
        i = 2;
    }
}
我试了一下 返回值是1
但是我单步调试的时候运行如下
1.i = 1
2.return i
3. i = 2
4. return i
哪位大神能给我解释一下啊/?????

解决方案 »

  1.   

    finally后面的是一定执行的。但是变量i前面没有return 关键字,所以只是把变量i重新赋值为2;你在finally里面加上return 返回值就是2了;
      

  2.   

    先执行try块里的程序return 回i的值,为1;然后执行finally块里的程序,将变量i赋值为2;
      

  3.   

    首先谢谢啊。
    我也知道在finally里returni 就是返回2
    但是,在finally里没有return的时候
    程序会两次执行到try块里的return i
    第二次是在finally里的i变成2 之后 又跳到了try里return i
    那按理说应该函数返回的是2 啊???