日期:2014-05-20  浏览次数:20806 次

求解 如下函数执行过程
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
哪位大神能给我解释一下啊/?????
------解决方案--------------------
finally后面的是一定执行的。但是变量i前面没有return 关键字,所以只是把变量i重新赋值为2;你在finally里面加上return 返回值就是2了;
------解决方案--------------------
先执行try块里的程序return 回i的值,为1;然后执行finally块里的程序,将变量i赋值为2;
------解决方案--------------------
首先谢谢啊。
我也知道在finally里returni 就是返回2
但是,在finally里没有return的时候
程序会两次执行到try块里的return i
第二次是在finally里的i变成2 之后 又跳到了try里return i
那按理说应该函数返回的是2 啊???
------解决方案--------------------
您可以单步调试一下。。。我是彻底蒙圈了