Java:为什么PrintWriter或PrintStream类不抛出异常?
Possible Duplicate:
PrintWriter and PrintStream never throw IOExceptions
也许这个问题有点“奇怪”。但是我很想知道为什么PrintWriter和PrintStream都不自动检查运行时异常,而且它们提供了checkError()方法
提前感谢大家
你可以在下面搜索框中键入要查询的问题!
Possible Duplicate:
PrintWriter and PrintStream never throw IOExceptions
也许这个问题有点“奇怪”。但是我很想知道为什么PrintWriter和PrintStream都不自动检查运行时异常,而且它们提供了checkError()方法
提前感谢大家
# 1 楼答案
对于经常写入std out或err的PrintStream,这些流可能已被关闭或丢弃,但您不希望程序因此意外失败
PrintWriter在许多方面都是PrintStream的作者版本,尽管我不确定重复PrintStream的错误是个好主意。;)
PrintWriter不报告IOException这一事实使它成为向套接字写入文本的糟糕选择,在套接字中,您通常需要知道连接已失败
# 2 楼答案
我认为这主要是因为系统。err是一个打印流
在catch块中处理异常时,调用e.printStackTrace()是常见的,它会写入系统。犯错误如果该调用引发异常,您将丢失原始异常,并从代码中引发PrintStream错误。然后,您需要在catch块中进行额外的try/catch,以防止出现这个问题,因为它会造成一个大混乱
请注意,JDK1.7解决了从catch块引发异常的问题,并允许您访问这两个异常