2011-04-29 138 views
1

請看下面的僞碼方法。如果readUrls()的調用引發異常,這是不是意味着closeConnection()將不會執行並且程序流將返回調用getdata()的方法?什麼時候拋出java異常

感謝

getdata() throws Exception 
{ 
    setup(); 
    readUrls(); 
    closeConnection(); 
} 

回答

9

您的假設是正確的。爲了避免這種情況,你可以這樣做:

getdata() throws Exception 
{ 
    setup(); 
    try { 
     readUrls(); 
    } finally { 
     closeConnection(); 
    } 
} 
+0

但是'throws'子句可能是多餘的。 – aioobe 2011-04-29 13:21:55

+0

不,它不是:這個異常仍然拋出。 – 2011-04-29 13:22:56

+0

哦,對。抱歉誤讀。 – aioobe 2011-04-29 13:23:31

1

這要看你有沒有處理的例外在readUrls()那麼是什麼你說的是正確的。這意味着您沒有try...catchreadUrls()方法。

2

是,如果readUrls()拋出異常流量將返回到方法調用getdata(),在同樣的事情會發生,直到:

  • 有一個catch塊,其中異常被處理
  • 異常起泡到線程的主要方法/ run方法。
2

當一個異常被拋出,當前的方法的呼叫被中斷,並立即返回。使用try-catch-finally模式關閉連接(在finally語句中使用closeConnection()))

相關問題