Java 中的类 IOException 应该是一个未经检查的 RuntimeException 吗?
您是否同意 Java 类的设计者应该将其设置为派生的未经检查的运行时异常,而不是仅派生的已检查异常?java.io.IOException
java.lang.RuntimeException
java.lang.Exception
我认为该类应该是一个未经检查的异常,因为应用程序在解决文件系统错误等问题方面几乎无能为力。但是,在《当你不能抛出异常时》中,Elliotte Rusty Harold声称大多数I / O错误都是暂时性的,因此您可以在放弃之前多次重试I / O操作:IOException
例如,IOComparator 可能不会接受 I/O 错误,但是 — 因为许多 I/O 问题是暂时性的 — 您可以重试几次,如清单 7 所示:
一般情况是否如此?Java 应用程序能否更正 I/O 错误或等待系统恢复?如果是这样,那么检查 IOException 是合理的,但如果不是这样,则应取消选中 IOException,以便业务逻辑可以将此异常的处理委托给单独的系统错误处理程序。