一、 無論有木有出現異常,finally塊中代碼都會執行;函數
2、當try和catch中有return時,finally仍然會執行;spa
3、當try和catch中有return時,finally也有return時,程序執行finally塊中的return。orm
-----------------------例如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--------