您是否曾见过Java文件close()抛出异常?

Tom*_*ito 22 java file-io exception

有没有人见过在任何可关闭的对象上调用close方法时抛出的异常?

Ste*_*n C 27

一个IOException将被扔到close如果最终flush失败.可能的原因包括:

  • 文件系统已满,或者用户超过配额,
  • 硬盘错误,
  • 文件系统被强制卸载,
  • 由于网络或其他问题,远程文件系统不可用,
  • (可能)如果通过OutputStreamWriter或类似的方式写入文件,则会出现字符编码错误,
  • 如果"文件"是设备文件,则设备错误,
  • 如果closeable是网络流,则丢失连接,
  • 如果closeable是外部进程的管道,则管道损坏,
  • 等等.

我当然看到了其中一些.其他人不太可能.

但是,如果您正在编写的数据很重要,那么您应该允许close失败.例如,如果您的应用程序正在写出文件系统填满的关键文件,那么您的应用程序在用截断版本替换文件的旧副本之前最好注意这一点.


Uri*_*Uri 6

是的,如果你使用非本地磁盘文件以外的任何东西,它并不罕见,恕我直言.

Close()有效,如果此时你的closable仍然有效并且打开.管道,远程文件等许多东西都会过早死亡.

另外,我已经看到代码忽略了打开和写入时的错误,仍然试图关闭(例如,在finally块中).