Java的:为什么不为PrintWriter或PrintStream的类抛出异常? [重复](J

2019-09-22 11:15发布

可能重复:
为PrintWriter和PrintStream的从未引发IOException

也许这个问题有点“怪”。 但我很好奇,想知道为什么两者的PrintWriter和PrintStream的不检查自动运行时异常,和他们提供了一个checkError()方法。

感谢所有提前。

Answer 1:

对于PrintStream的这往往是写到std出或犯错,这些流可能已被关闭或丢弃,但你不希望程序作为一个结果意外失败。

PrintWriter的是在许多方面为PrintStream的作家版本,但我不知道它是重复的PrintStream的错误是一个好主意。 ;)

事实上PrintWriter的不报告IOException异常使其成为编写文本到一个Socket,你经常需要知道连接失败一个糟糕的选择。



Answer 2:

我认为这是主要是因为System.err的是一个PrintStream。

当你在处理一个catch块)例外,调用e.printStackTrace(常见并将其写入System.err的。 如果该调用抛出一个异常,你就失去了原来的异常,并从你的代码抛出的PrintStream的错误信息。 那么你就需要一个额外的try / catch你的catch块内,以防止这个问题,这使得大混乱。

需要注意的是JDK 1.7的地址从catch块抛出异常的问题,并允许您访问这两个例外。



文章来源: Java: Why don't the PrintWriter or PrintStream classes throw exception? [duplicate]