簡體   English   中英

在Java中使用System.err.println()

[英]Use of System.err.println() in Java

在標准控制台上,無論我們是在System.out還是System.err編寫的,所有內容都以白色打印。 在IDE(對我來說是Eclipse)中,我們可以在控制台上看到兩種顏色的不同輸出。 System.out為黑色, System.err為紅色。

是否僅在IDE中提供System.err 由於cmd,我們無法區分System.outSystem.err 兩者均以相同顏色打印。

這是大多數操作系統中可用的兩個不同的輸出流。 由於您的終端/命令行環境的設置,您沒有對它們進行顏色編碼。 另一方面,您的IDE為不同的流提供不同的可視化。

如果要給它們着色,請考慮使用ANSI轉義序列。

System.out轉到標准輸出流(stdout),而System.err轉到標准錯誤流(stderr)。 有關詳細信息以及如何控制它們的流向 ,請參閱標准流 Eclipse只是為您方便地為其顏色編碼,因此您可以在一個視圖中區分它們。

由於系統出錯誤

System.err是一個PrintStream。 System.err的工作方式類似於System.out,但通常僅用於輸出錯誤文本。 某些程序(例如Eclipse)將以紅色文本顯示System.err的輸出,以使其更明顯是錯誤文本。

JLS

20.18.3 public static PrintStream err;

此變量的初始值為“標准”錯誤輸出流,該流已經打開並准備接受輸出數據。 通常,這對應於顯示輸出或主機環境或用戶指定的另一個輸出目標。 按照約定,即使主要輸出流(變量out的值)已重定向到文件或其他目標位置,該輸出流也用於顯示錯誤消息或其他信息,這些信息應引起用戶的立即注意。通常不會持續監控。 請注意,此字段不是最終字段,因此如有必要,可以更新其值。

這是來自unix世界的遺物,在unix世界中,大多數功能都可以作為要鏈接的unix命令使用。 一個命令的輸出用於輸入另一個命令,如下所示:

grep -i 'token' file | mail peter@address.de

管道符號僅重定向標准輸出(System.out),而不重定向標准錯誤(System.err)。 因此,錯誤消息將在控制台上看到,並且常規輸出將進入mail命令。

如果只有一個流,則無法區分它們。

Windows不依賴命令行(Windows Server 2008中已更改!)並沒有再發明,而只是采用了unix概念並將其在dos命令中使用。 僅僅是幾乎沒有Windows用戶通常知道他們的優勢。

使用示例:

try {
    Class.doSomething(myFile);
  } catch (Exception e){
    System.err.println("Fatal error performing doSomething: " + e);
    System.exit(-1);
  }

Java中始終存在System.outSystem.err

根據您的控制台, 可能有可能使它以不同的顏色顯示兩個流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM