Javaでは、URL接続はいつ閉じますか?


82

JavaはいつURLへの接続を手放しますか?URLまたはURLConnectionのいずれにもclose()メソッドが表示されないので、リクエストが終了するとすぐに接続が解放されますか?私は主に、例外ハンドラーでクリーンアップを行う必要があるかどうかを確認するように求めています。

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

10
catch(Exception)は絶対に使用しないでください。特定の例外がスローされた場合は、それぞれを独自の句でキャッチしてください
OscarRyz 2009年

4
または、少なくとも最後に例外をキャッチします(他の誰も例外をキャッチしない場合)。
jeremy 2012

回答:


50

プロトコルで指定されている特定のプロトコルによって異なります。永続的な接続を維持するものもあれば、接続によって指定された入力ストリームまたは出力ストリームでコールが閉じたときに接続を閉じるものもあります。ただし、URLConnectionから開いたストリームを閉じることを忘れないでください。それ以外に、できることはありません。

java.net.URLConnectionのjavadocから

リクエスト後にURLConnectionのInputStreamまたはOutputStreamでclose()メソッドを呼び出すと、特定のプロトコル仕様で異なる動作が指定されていない限り、このインスタンスに関連付けられたネットワークリソースが解放される場合があります。


2
これは良い答えですが、HttpUrlConnectionの主格については説明していません。
snicolas 2013年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.