2014-10-02 32 views
-1

我真的不明白在try-catch塊中使用finally塊... ,無論我們最終使用或不使用,我們都可以得到同樣的代碼運行。 例如是這些代碼之間差:和是try-catch沒有終於與try-catch一樣嗎?

try 
    { 
     System.out.println(1/0); 
    } 
    catch(ArithmeticException e) 
    { 
     System.out.println("Error"); 
    } 
    finally 
    { 
     System.out.println("After try-catch"); 
    } 

此:

try 
    { 
     System.out.println(1/0); 
    } 
    catch(ArithmeticException e) 
    { 
     System.out.println("Error"); 
    } 

    System.out.println("After try-catch"); 

什麼是邏輯上在輸出或跑步碼的層次差???

回答

1

A finally總是執行執行,除非在某些情況下,例如調用System.exit()或突然退出的線程。

一如既往的JLS定義的所有行爲

+0

也那我要是追到後寫我的代碼,而finally塊,它總是會執行是否發生異常! – 2014-10-02 10:40:20

+0

@Ahmad,如果拋出異常或發生'RuntimeException',則不行。 – epoch 2014-10-02 10:41:48

+0

你是什麼意思「如果拋出異常」?可以用一個例子告訴我? – 2014-10-02 10:56:27