1、 不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、当try和catch中有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--------