Закрытие URLConnection и InputStream правильно?
Я видел много разных примеров использования HttpURLConnection + InputStream и закрывал их (или не закрывал) после использования. Это то, что я придумал, чтобы убедиться, что все закончилось после завершения, есть ли ошибка или нет. Это действительно?:
HttpURLConnection conn = null;
InputStream is = null;
try {
URL url = new URL("http://example.com");
// (set connection and read timeouts on the connection)
conn = (HttpURLConnection)url.openConnection();
is = new BufferedInputStream(conn.getInputStream());
doSomethingWithInputStream(is);
} catch (Exception ex) {
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
}
}
if (conn != null) {
conn.disconnect();
}
}
Спасибо
Ответы
Ответ 1
Yep.. Выполнение конечной части в конечном итоге было бы лучшей идеей, потому что, если код не сработает где-то, программа не будет достигать до .close()
, .disconnect()
операторов, которые мы сохраняем перед операторами catch...
Если код выходит из строя где-то, а исключение выбрасывается между программой, все равно, наконец, выполняется выполнение независимо от того, что выбрано исключение...