[問題] try-catch-finally 敘述

看板java作者 (喬巴)時間17年前 (2008/04/08 01:15), 編輯推噓5(501)
留言6則, 6人參與, 最新討論串1/1
有一個程式是這樣的: public class test{ public static void main(String[] args){ int x = 0; while (x<10){ try{ if (x==3) continue; if (x==4) break; } finally{ System.out.println("x="+x); if (x==4) continue; x = x + 1; } } System.out.println("final x="+x); } } 執行結果會是: x=0 x=1 x=2 x=3 x=4 x=4 x=4 ...... 這是一個無窮迴圈 問為什麼 x=3 and x=4 竟會執行?且 x=4 是個無窮迴圈? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.116.193.15

04/08 01:16, , 1F
continue and break 沒有發生作用?
04/08 01:16, 1F

04/08 02:31, , 2F
FINALLY一定會執行 無論有無break
04/08 02:31, 2F

04/08 10:28, , 3F
這很明顯啊@@ 仔細看看當x為4時, 每行是怎麼執行的...
04/08 10:28, 3F

04/08 10:59, , 4F
在下試了一下,如果把final中的if那一行//後就有答案了
04/08 10:59, 4F

04/08 16:27, , 5F
break-> if (x==4) cont';->x還是4 就變無窮迴圈了
04/08 16:27, 5F

04/09 16:14, , 6F
x=4的時候在finally裡就不會再增加..當然就無窮loop囉
04/09 16:14, 6F
文章代碼(AID): #17-bR8rX (java)