Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否需要处理或忽略OutputStream close()函数触发的IOException?_Java_Io_Outputstream - Fatal编程技术网

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

Java 我是否需要处理或忽略OutputStream close()函数触发的IOException?,java,io,outputstream,Java,Io,Outputstream,在下面的代码中,outPutStream的close函数抛出一个我应该捕获的IOException异常。我的问题是我需要处理它吗?因为我在使用移动设备,我想确保释放所有使用的资源,或者我可以安全地忽略例外情况 //... OutputStream output = null; try { output = connection.getOutputStream(); output.write(query.getBytes(charset)); } finally {

在下面的代码中,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 ?
     }
}

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


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

在最坏的情况下,您可以发出警告。但通常,在尝试关闭已关闭的会话时会引发此类异常。在这种情况下,您不需要做任何事情。

java文档没有详细说明所有不同的条件关闭将抛出一个
IOException
,因此没有什么可以做的


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

在有效的Java中,Joshua Bloch提到这是您可能希望忽略的异常之一。他说,一般来说,你确实希望对异常做更多的处理,而不仅仅是记录它们。

你永远不应该忽略可能抛出的异常,看看Java 7中新增的Try with resources块,它可能会让这段代码看起来更漂亮一些:你能用它做什么?是的,这一直让我抓狂。我经常做的就是记录错误,这样,如果它发生了,我知道它发生了,但我不知道在这种情况下需要做什么才能恢复(如果有的话)。亨特·麦克米伦:但是你推荐的“尝试使用资源”块可能会忽略吉米询问如何处理的异常。阅读链接中关于“抑制”异常的讨论。调用flush()有意义吗?或者它无法执行。我认为这也会引发IOException。我认为这是没有意义的,在阅读一点后,close将首先调用flush。在我上面的评论中,我假设我们的close()已经引发异常。对不起,我不是指你的评论。我说的是我的第一个假设。谢谢你的跟进。