正确关闭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();
}
}
谢谢
问题答案:
是的。在做最后的端部将是最好的主意,因为如果代码某处出现故障时,程序将无法达到,直到.close()
,.disconnect()
报表,我们catch语句之前保持…
如果代码在某处失败并且在程序之间引发异常,则无论引发异常如何,最终仍将执行。