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時都將顯示錯誤信息。

 

發佈了15 篇原創文章 · 獲贊 7 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章