2012-09-01 81 views
-1

我想在try/catch塊內放一個while循環。對於我的好奇心來說,當while循環退出時,try catch不會被執行。有些人可以解釋實際發生了什麼嗎? 我試圖谷歌,但無法找到任何細節。雖然循環裏面的嘗試塊

+6

請出示一些代碼。 – JohnB

+0

根據JLS你所描述的不可能發生。請向我們展示演示此行爲的代碼。 (我的猜測是你誤解了一些東西......) –

+0

@StephenC是的,它可以,看到我的答案。 – alfasin

回答

5

我假設你的代碼如下所示:

try 
{ 
    while (...) 
    { 
     // ... 
    } 
} 
catch (FooException ex) 
{ 
    // This only executes if a FooException is thrown. 
} 
finally 
{ 
    // This executes whether or not there is an exception. 
} 

catch塊,如果有異常時,纔會執行。終止塊通常執行是否拋出異常。所以你可能會發現你的finally塊實際上正在被執行。你可以通過在那裏放置一條導致輸出到控制檯的線來證明這一點。

但有些情況下,finally塊不運行。在這裏看到更多的細節:

+4

這聽起來像他指的是'finally'塊,不是嗎? – cheeken

+0

@cheeken:好的,是的,我明白你的意思了。問題很難理解。他應該發佈他的代碼。 –

+0

這是我作爲聲明給出的。 while循環完成執行後會發生什麼? – Tinkerbel

1

只有當你的程序退出或者通過使用System.exit()或者如果ErrorThrowable被拋出(對比Exception,將被抓),它可以發生。

嘗試以下操作:

public static void main(String[] args) {   
     try{ 
      System.out.println("START!"); 
      int i=0; 
      while(true){ 
       i++; 
       if(i > 10){ 
        System.exit(1); 
       } 
      } 
     } 
     catch (Exception e) { 
      // TODO: handle exception 
     } 
     finally{ 
      System.out.println("this will not be printed!"); 
     } 
    }