try catch finally中return

一、 無論有木有出現異常,finally塊中代碼都會執行;函數

2、當trycatch中有return時,finally仍然會執行;spa

3、當trycatch中有return時,finally也有return時,程序執行finally中的returnorm

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

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

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

-------
執行結果----------------io

--try----
--finally----
test

 --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--

static

4、finally是在return後面的表達式運算後執行的(此時並無返回運算後的值,而是先把要返回的值保存起來,管finally中的代碼怎麼樣,返回的值都不會改變,任然是以前保存的值),因此函數返回值是在finally執行前肯定的;所以,即便finally中對變量x進行了改變,可是不會影響返回結果。

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

-----------執行結果----------------

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

相關文章
相關標籤/搜索