2008-11-07 108 views
63

什麼時候java的放手一連接到一個URL的?我沒有看到在任一網址close()方法或URLConnection的所以它儘快釋放連接的請求完成?我主要要求查看是否需要在異常處理程序中進行清理。在Java中,何時URL連接關閉?

try { 
    URL url = new URL("http://foo.bar"); 
    URLConnection conn = url.openConnection(); 
    // use the connection 
} 
catch (Exception e) { 
    // any clean up here? 
} 
+8

切勿使用趕上(例外),如果一個特定的異常被拋出,趕上每個人在自己的第 – OscarRyz 2009-05-26 20:36:14

+3

或至少趕上最後的異常(如果沒有其他的捕捉異常)。 – jeremy 2012-07-18 09:01:47

回答

41

它取決於協議中指定的特定協議。有些保持持久連接,其他連接在您的呼叫在連接給出的輸入或輸出流中關閉時關閉它們的連接。但除了記住關閉從URLConnection打開的流之外,沒有別的辦法可以做。

從的Javadoc java.net.URLConnection中

調用關閉()在 的InputStream或OutputStream的一個請求後 的URLConnection的方法可以釋放與此 實例相關聯 網絡資源,除非特定的協議 規格爲它指定不同的 行爲。

39

如果轉換爲HttpURLConnection,則有disconnect()方法。如果連接空閒,它可能會立即斷開連接。沒有保證。