在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