我是从 Java™I / O,第2版获得的 作者:Elliotte Rusty Harold:
围绕每次调用System.out.println()包装一个try / catch块是不方便的,Sun决定让PrintStream(以及后来的PrintWriter)捕获并吃掉print()或println中抛出的任何异常( ) 方法。如果你想检查print()或println()方法中的异常,可以调用checkError():
public boolean checkError()
如果在此打印流上发生异常,则checkError()方法返回TRue,如果没有,则返回false。它只告诉您发生了错误。它不会告诉您发生了什么类型的错误。如果您需要了解有关错误的更多信息,则必须使用不同的输出流或编写器类。
我只是测试了这个checkError方法的真实返回类型....
为此创建一些实际场景的任何线索...... : - )
答案 0 :(得分:4)
以下是checkError()
将返回true
的几种情况:
情景#1
最终文件系统将填满,写入将失败。
情景#2
closeConnection
写入现在应该失败,因为HTTP连接不再处于将数据发送到远程服务器的正确状态。
这些场景是实用的,因为你应该能够让它们给你错误。但它们并不完全现实。例如,您通常不会使用PrintStream将POST数据发送到HTTP服务器。但这是OutputStream与PrintStream API之间差异的根源。 OutputStream / Writer API设计用于应用程序需要知道输出是否失败的用例。 PrintStream / PrintWriter API专为“轻量级”用例而设计,例如将用户消息输出到控制台,其中处理失败......嗯......浪费程序员的努力。