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 回答
木偶匹诺曹
TA贡献3条经验 获得超1个赞
请问哪个是老师的运行结果呢?我的运行结果是这样的
它是运行到divider=0之后会报第一个错误,然后跳出循环,输出第一个提示之后循环结束,再执行int int result2=tct.test2();,循环执行后再报第二个错,最后执行finally。finally里面的东西永远是最后执行的。因为你的finally后面没有再执行的了,所以直接从tct.test2()跳出后就直接执行后面的输出语句,然后结束了。所以那个报错应该不会在程序执行完之后还会报错的。
以上是我分析的。但是我在不断重复执行这个程序的时候它报错的位置也会有变化,所以我不清楚这个是否还有其他原因。
添加回答
举报
0/150
提交
取消