try,catch和finally的执行顺序

在java编程中,经常会遇到try,catch,finally等语句,那么这些语句的执行顺序是什么呢,下面我们通过几个程序来分析一下:

public class TryCatchFinally {


public static void main(String[] args) {
System.out.println(f1());
System.out.println("###################");
System.out.println(f2());
System.out.println("###################");
System.out.println(f3());
System.out.println("###################");
System.out.println(f4());


}

/**try语句块无错误,有finally语句

* @return
*/
@SuppressWarnings("finally")
private static int f1(){
try{
int a=1/1;
System.out.println("try");
return 0;
}catch(Exception e){
System.out.println("catch");
return 1;
}finally{
System.out.println("finally");
return 2;
}
}


/**
* try语句块有错误,有finally语句
* @return
*/
@SuppressWarnings("finally")
private static int f2(){
try{
int a=1/0;
System.out.println("try");
return 0;
}catch(Exception e){
System.out.println("catch");
return 1;
}finally{
System.out.println("finally");
return 2;
}
}

/**
* try语句块无错误,没有finally语句
* @return
*/
private static int f3(){
try{
int a=1/1;
System.out.println("try");
return 0;
}catch(Exception e){
System.out.println("catch");
return 1;
}
}

/**
* try语句块有错误,没有finally语句
* @return
*/
private static int f4(){
try{
int a=1/0;
System.out.println("try");
return 0;
}catch(Exception e){
System.out.println("catch");
return 1;
}
}
}

执行函数f1输出的结果:

try
finally
2

说明没有执行try语句的return 0,执行的是finally中的return 2。

执行函数f2输出的结果:

catch
finally
2

由于try语句块有错误,所以执行catch语句,但是并没有执行catch语句中的return 1,而是接着执行finally中的语句,并return。

执行函数f3输出的结果:

try
0

try语句块中没有错误,不执行catch语句

执行函数f4输出的结果:

catch
1

try语句块中报错,执行catch语句,没有执行try语句中的return 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值