0
点赞
收藏
分享

微信扫一扫

java语言基础(78)——异常处理中finally关键字深入理解


finally作为异常处理的一部分,被finally关键字包围的语句一定会执行(多用于资源释放),除非finally之前有退出。

finally之前有return语句,程序的运行流程:


public class ExceptionDemo {

/**
* @param args
*/
public static void main(String[] args) {
System.out.println(show());
}
public static int show(){
int a = 1;

try{
System.out.println(a/0);
a = 2;
}catch(Exception e){
a = 3;
return a;
}finally{
a = 4;
}
return a;
}

}


在上述catch语句中,有return a;  由于有finally语句结构,所以会先执行finally中的语句,此时,虽然a已经变成4,但是最终return语句还是执行的是catch中的return,那么结果为何是3呢?反编译后我们发现,程序执行至catch语句时,return a; 已经变为 return 3。所以即使执行过finally中的语句后,最终返回结果还是3.

举报

相关推荐

0 条评论