为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我代码执行的顺序和慕课网老师的不一样,明明是照着打的,要怎么改呢?

为什么我代码执行的顺序和慕课网老师的不一样,明明是照着打的,要怎么改呢?

溯源1 2017-11-10 17:02:09
package Exception;public class Finally { public static void main(String[] args) { // TODO Auto-generated method stub Finally tct=new Finally(); int result=tct.test(); System.out.println("test()方法,执行完毕!返回值为:"+result); int result2=tct.test2(); System.out.println("我想大声告诉你!test2()2执行完毕!!~"); } public int test() { int divider=10; int result=100; try { while(divider>-1) { divider--; result=result+100/divider; } return result; }catch(Exception e) { e.printStackTrace(); System.out.println("circulation throw exception!!!"); return -1; } } public int test2() { int divider=10; int result=100; try { while(divider>-1) { divider--; result=result+100/divider; } return result; }catch(Exception e) { e.printStackTrace(); System.out.println("circulation throw exception!!!"); return result=999; }finally { System.out.println("这是finally!!哈哈!!"); System.out.println("这是Result!!我的值是:"+result); } } }
查看完整描述

2 回答

?
慕容7724642

TA贡献14条经验 获得超4个赞

没毛病啊,把错误打印出来了。

查看完整回答
反对 回复 2017-11-12
?
木偶匹诺曹

TA贡献3条经验 获得超1个赞

请问哪个是老师的运行结果呢?我的运行结果是这样的//img1.sycdn.imooc.com//5a05cbc000011cc010500380.jpg

它是运行到divider=0之后会报第一个错误,然后跳出循环,输出第一个提示之后循环结束,再执行int int result2=tct.test2();,循环执行后再报第二个错,最后执行finally。finally里面的东西永远是最后执行的。因为你的finally后面没有再执行的了,所以直接从tct.test2()跳出后就直接执行后面的输出语句,然后结束了。所以那个报错应该不会在程序执行完之后还会报错的。

以上是我分析的。但是我在不断重复执行这个程序的时候它报错的位置也会有变化,所以我不清楚这个是否还有其他原因。

查看完整回答
反对 回复 2017-11-11
  • 2 回答
  • 0 关注
  • 1282 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信