何时使用StdErr

ZDNet软件频道 时间:2002-11-29 作者:BUILDER.COM |  我要评论()
本文关键词:
当向控制台输出信息时,开发者有两个选择:System.out和System.err。尽管这看起来是显而易见的,但很多开发者都不了解为什么出错和调试时使用System.err。

当向控制台输出信息时,开发者有两个选择:System.out和System.err。使用者更倾向于输出的是System.out,而如果是System.err则输出“error”。尽管这看起来是显而易见的,但很多开发者都不了解为什么出错和调试时使用System.err。

当输出一个流时,JVM和操作系统共同决定何时输出这个流。也就是说,尽管开发者键入了:

System.out.print_
("Test Output:");

JVM和操作系统的组合体并不会立即输出这个流。相反,它将保持等待状态直到将要输出的东西达到一定的量。


假设输入以下指令:

System.out.println("Debugging Info.");

JVM可能同意输出;然而,操作系统可能决定暂不输出。

由于这个原因,在调试程序时想要发现出错的位置就有可能成为问题。考虑以下的程序:

for(int i=0; i<56; i++) {
 System.out.println(i);
 ... // containing an error
 }

错误可能出现在i等于54时,但是可能JVM在i等于49时就结束输出了。50到54仍然存在于缓存中,结果也就丢失了。

使用System.err来报告错误、调试程序就可以避免这种情况出现,它将使每一次操作的结果都输出出来。例如以下程序:

for(int i=0; i<56; i++) {
 System.err.println(i);
 ... // containing an error
 }

在每一次i等于54时都将显示错误信息。

 



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134