try catch finally中return

原创
2016/04/26 14:23
阅读数 81

1、 不管有木有出现异常,finally块中代码都会执行;

2、当trycatch中有return时,finally仍然会执行;

3、当trycatch中有return时,finally也有return时,程序执行finally中的return

-----------------------例如1-----------------------------

public static String test1(){
   
try {
        System.out.println("---try----");
        return "--return---try--";
    } catch (Exception e) {

    }finally{
        System.out.println("---finally----");
        return "--return--finally--";
    }
}

-------
执行结果----------------

--try----
--finally----

 --return--finally—

-----------------------例如2-----------------------------

 

public static String  test2(){
        try {
            int a=1/0;
            System.out.println("---try----");
            return "--return---try--";
        } catch (Exception e) {
            System.out.println("------catch ----");
            return "-return--catch--";
        }finally{
            System.out.println("---finally----");
            return "--return--finally--";
        }
    }
--------------
执行结果------

----catch ----
---finally----
--return--finally--

4、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;因此,即使finally中对变量x进行了改变,但是不会影响返回结果。

-----------------------例如-----------------------------
public static int test(){
    int x = 1;
    try {
        x = 2;
        return x;
   
} finally{
        x = 3;
    }
}

-----------执行结果----------------

--------2--------

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
3 收藏
1
分享
返回顶部
顶部