正确关闭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语句之前保持…

如果代码在某处失败并且在程序之间引发异常,则无论引发异常如何,最终仍将执行。