System.out和System.err区别

 

out有缓存,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时都将显示错误信息。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值