笔试题总结——finally一定会被执行?
程序员文章站
2024-03-20 18:24:40
...
笔试题总结——finally一定会被执行?
先来看一组定义
finally一定会被执行,即便try/catch中有return语句,也要将finally走一遍再走try/catch的return语句,如果finally也有return语句,则直接返回,不会再走try/catch了的return语句了。
概念都是晦涩难懂的,下面就举一个简单的例子,解释一下这晦涩的定义。
// finally中没有返回值
public static int test(){
try {
System.out.println(10/0);
return 0;
}catch (Exception e){
return 1;
}finally {
System.out.println("finally");
}
}
// 打印结果
finally
1
上面这个例子就能说明,若finally没有返回值而try/catch中存在返回值,则try/catch在返回前,先执行finally中的语句,再返回返回值
。
// finally中也存在返回值
public static int test(){
try {
System.out.println(10/0);
return 0;
}catch (Exception e){
return 1;
}finally {
System.out.println("finally");
return 2;
}
}
// 打印结果
finally
2