问答详情
源自:1-3 Java中通过案例学习 try...catch...finally

try catch语句return返回值的原理是啥

public class Test {


public static void main(String[] args) {

    Test t = new Test();

    int result = t.xx();

    System.out.println("运行完毕,返回的值为:"+result);

}

    public int xx() {

        int div = 10;

        int result = 100;

        try {

            while(div>1) {

            div--;

            result = result+100/div;

        }

        System.out.println("程序正常运行,输出结果:"+result);

        return result = 10;

        }catch(Exception e) {

            e.printStackTrace();

            System.out.println("循环抛出异常");

        }

        finally {

            System.out.println("fianlly执行了");

        }

        return result = 20;

    }

}

代码如上,评论里有人说try  catch的语句只要执行了return,那么语句块结束,但是视频里老师说try  catch语句块结束之后不是会继续往下运行吗,那么我这里try语句中return返回了10,然后语句块结束,执行return result = 20;  最后main函数里接收到的值不应该是20吗?但是运行之后main函数里的值是10,这是为什么,到底谁说的对。还有:

public int xx() {

int div = 10;

int result = 100;

try {

while(div>0) {

div--;

result = result+100/div;

}

System.out.println("程序正常运行,输出结果:"+result);

return result = 10;

}catch(Exception e) {

e.printStackTrace();

System.out.println("循环抛出异常");

return result = 1;

}

finally {

System.out.println("fianlly执行了");

}

return result = 20;

}

写成这样return result = 20; 就会报错,为什么啊,之前在try里写了return,不是可以正常运行吗?怎么在catch里面写就报错呢,求解!!!!!!!!!!!

提问者:Yeee 2017-11-10 10:40

个回答

  • 慕的地2053752
    2019-03-26 14:57:12

    个人的理解是不报错的时候,程序只执行到catch之前,报错后执行catch后面的程序,result被重新赋值为20,所以返回到main函数的值为20

  • 慕的地2053752
    2019-03-26 14:52:36

    当div>0时,div取1时成立,div--后div=0,所以程序会报错

  • Yeee
    2017-11-10 10:48:19

    而且还有,我的try里面return了值,语句块不是应该结束吗?但是finally还是执行了,感觉热评说的不对啊。