在下面的代码中,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 ?
}
}
答案 0 :(得分:7)
如果关闭不起作用,你能做什么?
你唯一能做的就是记录异常,正如@mprabhat建议你可以将引用设置为null来加速GC。
答案 1 :(得分:3)
java文档没有详细说明所有不同的条件close将抛出IOException
因此没有多少人可以做。
至少可以将OutputStream
的引用设置为null并记录异常。
答案 2 :(得分:0)
在最坏的情况下,您可以发出警告。但通常,在尝试关闭已经关闭的会话时会抛出此类异常。在这种情况下,您无需执行任何操作。
答案 3 :(得分:0)
在有效的Java中,Joshua Bloch提到这是你可能想忽略的例外之一。但是,他说,一般来说,除了记录异常之外,你确实希望做更多的事情。