Java:为什么PrintWriter或PrintStream类不抛出异常?

5
2个回答

4

对于经常写入std out或err的PrintStream,这些流可能已关闭或被丢弃,但您不希望程序因此意外失败。

PrintWriter在许多方面都是PrintStream的Writer版本,尽管我不确定重复PrintStream的错误是否是一个好主意。;)

PrintWriter不报告IOException的事实使其成为向套接字写入文本的较差选择,因为您经常需要知道连接是否已失败。


0

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

当你在catch块中处理异常时,调用e.printStackTrace()是很常见的,它会写入System.err。如果该调用抛出异常,你将失去原始异常,并从你的代码中得到PrintStream错误。然后你需要在catch块内部再加一个try/catch来防止这个问题,这会造成很大的混乱。

请注意,JDK 1.7解决了从catch块中抛出异常的问题,并允许你访问两个异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接