当前位置:  开发笔记 > 编程语言 > 正文

PrintWriter和PrintStream永远不会抛出IOExceptions

如何解决《PrintWriter和PrintStream永远不会抛出IOExceptions》经验,为你挑选了2个好方法。

几天前,我意识到PrintWriter(以及PrintStream)在写,刷新或关闭时都不会抛出IOException.

相反,它会trouble=true在发生错误时设置内部标志().
它不可能得到确切的异常,但只有有一些异常时才会出现(checkError()).

我的问题是:为什么会有这样的行为?API设计不是那么糟糕吗?



1> erickson..:

我认为既然System.outSystem.err是的情况下PrintStream,被提供了一些更轻松的错误处理.正如其他海报所提到的那样,这可能是为1995年左右从C/C++过渡的人们铺平道路.当添加Reader/Writer API时,PrintWriter创建了与现有版本并行的版本PrintStream.

一种非常需要此行为的应用程序是日志记录.日志记录是较大应用程序的辅助工具.通常,如果日志记录失败,则不希望整个应用程序失败.因此,System.err至少忽略异常是有道理的.



2> Owen..:

我想知道它是否因为IOExceptions被检查,这将要求你在每个System.out周围放置一个try catch块.呼叫.

更新:或者抛出方法签名.

这会很快变得烦人.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有