猿问

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

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);

}

}

}

http://img3.mukewang.com/5a056a8700018cff12800720.jpg


溯源1
浏览 1283回答 2
2回答

慕容7724642

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

木偶匹诺曹

请问哪个是老师的运行结果呢?我的运行结果是这样的它是运行到divider=0之后会报第一个错误,然后跳出循环,输出第一个提示之后循环结束,再执行int int result2=tct.test2();,循环执行后再报第二个错,最后执行finally。finally里面的东西永远是最后执行的。因为你的finally后面没有再执行的了,所以直接从tct.test2()跳出后就直接执行后面的输出语句,然后结束了。所以那个报错应该不会在程序执行完之后还会报错的。以上是我分析的。但是我在不断重复执行这个程序的时候它报错的位置也会有变化,所以我不清楚这个是否还有其他原因。
随时随地看视频慕课网APP

相关分类

Java
我要回答