赞
踩
public int add(int a,int b)
{
try {
return a+b;
}
catch (Exception e) {
System.out.println("catch语句块");//不会执行
}
finally{
System.out.println("finally语句块");
}
//因为try中有return,所以finally之后的都不会执行
System.out.println("我不会出现的!");//不会执行
return 0;//不会执行
}
1、finally块一定会执行,无论是否try…catch。
2、finally前有return,会先执行return语句,并保存下来,再执行finally块,最后return。
3、finally前有return、finally块中也有return,先执行前面的return,保存下来,再执行finally的return,覆盖之前的结果,并返回。
public static void main(String[] args) {
int k = f_test();
System.out.println(k);
}
public static int f_test(){
int a = 0;
try{
a = 1;
return a;
}
finally{
System.out.println("It is in final chunk.");
a = 2;
return a;
}
}
/*输出:
It is in final chunk.
2*/
public static void main(String[] args) {
try {
int i = 100 / 0;
System.out.println(i);//try后面的语句不会执行
} catch (Exception e) {
System.out.println(1);
//throw new RuntimeException();
} finally {
System.out.println(2222);
}
//前面没有return语句,所以会执行
System.out.println(3);
}
/**
* 1
2222
3
*/
public static void main(String[] args) {
try {
int i = 100 / 0;
System.out.println(i);//后面的语句不会执行
} catch (Exception e) {
System.out.println(1);
throw new RuntimeException();//只会执行finally中的,其他的不会执行
} finally {
System.out.println(2222);
}
//不会执行
System.out.println(3);
}
/**
* 1
* 2222
* Exception in thread "main" java.lang.RuntimeException
*/
还是需要理解Try…catch…finally与直接throw的区别:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。