Когда в Java закрывается URL-соединение?

Когда Java перестает подключаться к URL-адресу? Я не вижу метода close () ни для URL-адреса, ни для URLConnection, поэтому освобождает ли он соединение сразу после завершения запроса? В основном я спрашиваю, нужно ли мне делать какую-либо очистку в обработчике исключений.

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

Никогда не используйте catch (Exception), если выбрано конкретное исключение, ловите каждое в своем собственном предложении

OscarRyz 27.05.2009 00:36

или, по крайней мере, поймать исключение последним (в случае, если никто из других не улавливает исключение).

jeremy 18.07.2012 13:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
82
2
69 856
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это зависит от конкретного протокола, указанного в протоколе. Некоторые поддерживают постоянные соединения, другие закрывают свои соединения, когда ваш вызов закрывается во входном или выходном потоке, заданном соединением. Но кроме того, что вы не забываете закрывать потоки, открытые из URLConnection, вы больше ничего не можете сделать.

Из javadoc для java.net.URLConnection

Invoking the close() methods on the InputStream or OutputStream of an URLConnection after a request may free network resources associated with this instance, unless particular protocol specifications specify different behaviours for it.

Это хороший ответ, но не охватывает номинальный случай HttpUrlConnection.

Snicolas 18.10.2013 15:50

Если вы выполняете приведение к HttpURLConnection, существует метод Отключить(). Если соединение неактивно, оно, вероятно, немедленно отключится. Никаких гарантий.

Другие вопросы по теме