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

时间:2011-04-12 05:28:47

标签: java

在标准控制台上,无论我们是在System.out还是System.err编写,所有内容都以白色打印。在IDE(对我来说Eclipse)中,我们可以在控制台上看到两者的不同颜色输出。即System.out为黑色,System.err为红色。

System.err仅用于IDE吗?因为cmd我们无法区分System.outSystem.err。两者都以相同的颜色印刷。

6 个答案:

答案 0 :(得分:4)

这是两种不同的输出流,可在大多数操作系统中使用。由于终端/命令行环境的设置,您没有对它们进行颜色编码。另一方面,您的IDE为不同的流提供不同的可视化。

如果要为它们着色,请考虑使用ANSI转义序列。

答案 1 :(得分:3)

System.out转到标准输出流(stdout),System.err转到标准错误流(stderr)。有关详细信息以及如何控制其去向,请参阅standard streams。 Eclipse只是方便地为您设置颜色代码,以便您可以在一个视图中区分它们。

答案 2 :(得分:3)

来自system-in-out-error

  

System.err是一个PrintStream。   System.err的工作方式与System.out类似   除了它通常只用于   输出错误文本。一些程序   (如Eclipse)将显示输出   System.err用红色文字表示   更明显的是它是错误文本。

来自JLS

20.18.3 public static PrintStream err;
  

此变量的初始值为   一个“标准”错误输出流,   已经开放并准备接受   输出数据。通常,这   对应显示输出或   指定另一个输出目的地   由主机环境或用户。通过   约定,使用此输出流   显示错误消息或其他   应该来的信息   即使用户立即注意   主要输出流,值   变量out,已经   重定向到文件或其他   目的地通常不是   不断监测。请注意这一点   字段不是最终的,所以它的值可能是   必要时予以更新。

答案 3 :(得分:3)

这是来自unix世界的遗留物,其中大多数功能都可用作链接的unix命令。一个命令的输出用于提供另一个命令,如:

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

管道符号仅重定向stdout(System.out),但不重定向stderr(System.err)。因此,控制台上会显示错误消息,常规输出将转到mail命令。

如果只有一个流,则无法区分它们。

Windows,不依赖于命令行(在Windows Server 2008中已更改!)没有再次发明,只是采用了unix概念并使其在dos命令中可用。只是几乎没有Windows用户通常知道他们有什么好处。

答案 4 :(得分:0)

System.outSystem.err始终存在于Java中。

根据您的控制台,可能可以让它以不同的颜色显示两个流。

答案 5 :(得分:0)

使用示例:

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