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
提交
取消