在Java中,遇到IOException的流程管道流读取器能否恢复?

在Java中,遇到IOException的流程管道流读取器能否恢复?,java,io,inputstream,Java,Io,Inputstream,我有一些Java代码,它通过在循环中调用Java.io.BufferedReader#readLine()来启动其他进程并使用BufferedReader读取它们的输出。有时我看到java.io.BufferedReader#readLine()抛出IOException,例如,当进程意外退出时(在我的情况下可能会发生这种情况)等等 问题是:BufferedReader#readLine()抛出IOException:是否存在这样的情况,当再次从流读取时,可能会继续消耗进程输出(假设是某种暂时错

我有一些Java代码,它通过在循环中调用
Java.io.BufferedReader#readLine()
来启动其他进程并使用
BufferedReader
读取它们的输出。有时我看到
java.io.BufferedReader#readLine()
抛出
IOException
,例如,当进程意外退出时(在我的情况下可能会发生这种情况)等等

问题是:
BufferedReader#readLine()
抛出
IOException
:是否存在这样的情况,当再次从流读取时,可能会继续消耗进程输出(假设是某种暂时错误),或者
IOException
是否意味着流失败,应该放弃并关闭


我想整个问题归结为一件事,如果遇到I/O错误的管道流稍后可以从中恢复并继续读取或不读取。我的直觉告诉我,这取决于底层的操作系统/JVM实现,但我希望听到比我更熟悉这个主题的人的意见。

原因可能是任何原因,但根据我的经验,IOException使流无法使用是一条经验法则,没有相反的文档,您必须假设,当对象的某个方法引发异常时,该对象处于不一致的状态。如果从错误状态中恢复实际上是可能的,那么完全这样做而不是引发IOEEException将是一个更好的实现。在能够恢复时抛出异常只会毫无意义地将错误处理的负担强加给API用户。