如何从close()正确处理IOException

sle*_*ske 19 java error-handling file-io ioexception

Java的I/O类java.io.Reader,java.io.Writer,java.io.InputStream,java.io.OutpuStream和他们的不同子类中都有一个close()可抛出的方法IOException.

对于处理此类例外的正确方法是否有任何共识?

我经常看到建议只是默默地忽略它们,但这感觉不对,至少在开放写入资源的情况下,关闭文件时出现问题可能意味着无法写入/发送未刷新的数据.

另一方面,在阅读资源时,我完全不清楚为什么close()会扔掉它以及如何处理它.

那么有任何标准建议吗?

一个相关的问题是,close是否会抛出IOException?,但更多的是它的实现确实丢,不是关于如何处理异常.

Qwe*_*rky 7

记录下来.

你无法真正做任何事情(例如写一些从错误中恢复的代码),但它通常值得让人知道.

编辑:
在进一步调查并阅读其他评论后,我会说,如果你确实想要处理它,那么你将不得不知道实施的细节.相反,您可能需要了解实现的详细信息,以决定是否需要处理它.

但实际上,我无法想到任何流的示例,其中读取或写入将正常工作而不会抛出异常,但结束会.