一、 无论有木有出现异常,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--------