Когда 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?
}
или, по крайней мере, поймать исключение последним (в случае, если никто из других не улавливает исключение).




Это зависит от конкретного протокола, указанного в протоколе. Некоторые поддерживают постоянные соединения, другие закрывают свои соединения, когда ваш вызов закрывается во входном или выходном потоке, заданном соединением. Но кроме того, что вы не забываете закрывать потоки, открытые из 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.
Если вы выполняете приведение к HttpURLConnection, существует метод Отключить(). Если соединение неактивно, оно, вероятно, немедленно отключится. Никаких гарантий.
Никогда не используйте catch (Exception), если выбрано конкретное исключение, ловите каждое в своем собственном предложении