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呢
展开
 我来答
Monubia
2015-01-19 · TA获得超过8965个赞
知道大有可为答主
回答量:4373
采纳率:75%
帮助的人:1482万
展开全部

你在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是不管怎样都会执行的,所以肯定先输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式