
java中的try-catch-finally代码块什么执行呢,下面的程序为什么呢
publicclassTest{publicintadd(inta,intb){try{returna+b;}catch(Exceptione){System.out.p...
public class Test{
public int add(int a,int b){
try{
return a+b;
}catch(Exception e){
System.out.println("catch");
}finally{
System.out.println("finally");
}
return 0;
}
public static void main(String[] args){
Test demo = new Test();
System.out.println("和为"+demo.add(9,3));
}
}
结果为什么是
finally
和为12
为什么先输出finally呢 展开
public int add(int a,int b){
try{
return a+b;
}catch(Exception e){
System.out.println("catch");
}finally{
System.out.println("finally");
}
return 0;
}
public static void main(String[] args){
Test demo = new Test();
System.out.println("和为"+demo.add(9,3));
}
}
结果为什么是
finally
和为12
为什么先输出finally呢 展开
2个回答
展开全部
你在add方法上面打个断点,调试运行就能看出来了
先执行
return a+b;
再执行
System.out.println("finally");
再执行
return a+b;
最后返回主函数调用处
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
2015-01-19
展开全部
finally是不管怎样都会执行的,所以肯定先输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询