美文网首页
try catch return finally

try catch return finally

作者: 剑客kb | 来源:发表于2018-12-16 12:54 被阅读0次

结论:

1、不管有没有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
参考:https://www.cnblogs.com/fery/p/4709841.html

 public static void main(String[] args) {

        System.out.println(new testlist().test());;
        System.out.println(x);;
    }
    static int test()
    {
        x = 1;
        try
        {
            x++;
            x = x/0;     ---报错
            return x;
        } catch (Exception e) {
            return x++;
        }
        finally
        {
            x++;
        }
    }

输出结果:
2
4

去掉报错部分输出结果是2,3
出现非Exception的错误,如果finally有return返回值,则返回该值,没有则报错

public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>(1);
        int i = change("1","2",list);
        System.out.println(i);
        System.out.println(list);
    }

    private static int change(String s1, String s2, List<Integer> list) {
        try {
            list.add(1);
            int i = 1/0;   ---报错部分
            return 1;
        } catch (Exception e){
            list.add(2);
            return 2;
        } finally {
            list.add(3);
            return 3;
        }
    }
输出结果:
3
[1, 2, 3]
去掉报错部分输出结果是
3
[1, 3]
try {
  // do something
  System.exit(1);
} finally{
  System.out.println(“Print from finally”);
}

不会执行finally中的语句

相关文章

网友评论

      本文标题:try catch return finally

      本文链接:https://www.haomeiwen.com/subject/ndotkqtx.html