請看下面的僞碼方法。如果readUrls()
的調用引發異常,這是不是意味着closeConnection()
將不會執行並且程序流將返回調用getdata()
的方法?什麼時候拋出java異常
感謝
getdata() throws Exception
{
setup();
readUrls();
closeConnection();
}
請看下面的僞碼方法。如果readUrls()
的調用引發異常,這是不是意味着closeConnection()
將不會執行並且程序流將返回調用getdata()
的方法?什麼時候拋出java異常
感謝
getdata() throws Exception
{
setup();
readUrls();
closeConnection();
}
您的假設是正確的。爲了避免這種情況,你可以這樣做:
getdata() throws Exception
{
setup();
try {
readUrls();
} finally {
closeConnection();
}
}
這要看你有沒有處理的例外在readUrls()
那麼是什麼你說的是正確的。這意味着您沒有try...catch
的readUrls()
方法。
是,如果readUrls()
拋出異常流量將返回到方法調用getdata()
,在同樣的事情會發生,直到:
catch
塊,其中異常被處理run
方法。當一個異常被拋出,當前的方法的呼叫被中斷,並立即返回。使用try-catch-finally模式關閉連接(在finally語句中使用closeConnection()))
但是'throws'子句可能是多餘的。 – aioobe 2011-04-29 13:21:55
不,它不是:這個異常仍然拋出。 – 2011-04-29 13:22:56
哦,對。抱歉誤讀。 – aioobe 2011-04-29 13:23:31