我是否需要处理或忽略OutputStream close()函数触发的IOException?

时间:2011-12-14 15:47:50

标签: java io outputstream

在下面的代码中,outPutStream的close函数抛出了我应该捕获的IOException异常。我的问题是我需要处理吗?由于我正在使用移动设备,我想确保释放我使用的所有资源,或者我可以安全地忽略该异常。

//...
OutputStream output = null;
try {
     output = connection.getOutputStream();
     output.write(query.getBytes(charset));
} finally {
     if (output != null) try { 
        output.close(); 
     } catch (IOException e) {
        // Do i need to do something here ?
     }
}

4 个答案:

答案 0 :(得分:7)

如果关闭不起作用,你能做什么?

你唯一能做的就是记录异常,正如@mprabhat建议你可以将引用设置为null来加速GC。

答案 1 :(得分:3)

java文档没有详细说明所有不同的条件close将抛出IOException因此没有多少人可以做。

至少可以将OutputStream的引用设置为null并记录异常。

答案 2 :(得分:0)

在最坏的情况下,您可以发出警告。但通常,在尝试关闭已经关闭的会话时会抛出此类异常。在这种情况下,您无需执行任何操作。

答案 3 :(得分:0)

在有效的Java中,Joshua Bloch提到这是你可能想忽略的例外之一。但是,他说,一般来说,除了记录异常之外,你确实希望做更多的事情。