首页 > 解决方案 > 将输出和错误消息打印到控制台

问题描述

我正在尝试向控制台打印输出和错误消息。但有时输出的顺序会发生变化,首先它会打印错误消息然后打印简单的消息有人能帮我理解为什么会这样吗?输出顺序大部分时间都在变化。打印输出没有一致性。我正在使用 Eclipse IDE,我得到的输出如下。

我试图打印以下代码,

System.out.println("simple message");  
System.err.println("error message");  

预期的结果是这样的:

简单的信息

错误信息

但实际结果是这样的:

错误信息

简单的信息

标签: javaeclipse

解决方案


System.out.println() 和 System.err.println() 是不同的执行流。输出流被缓存,因此所有写入都进入此内存缓冲区。经过一段时间的沉寂后,它们实际上被写出来了。这是一个 for 循环,它基本上再次显示您的错误:

for(int x = 0; x <= 5; x++) {
    System.out.println("Out");
    System.err.println("Err");



}

为了每次通过循环“刷新” Streams 调用 .flush() :

for(int x = 0; x <= 5; x++) {
    System.out.println("Out");
    System.out.flush();
    System.err.println("Err");
    System.err.flush();


}

在这个 for 循环中,out 消息和 err 消息将首先打印,但在每次刷新时,您的 out 消息将首先打印,然后是您的 err 消息。输出将是这样的:

OutErr
Out
Out
Out
Out
Out

Err
Err
Err
Err
Err

那是因为 System.out 和 System.err 在不同的 Streams 上执行。


推荐阅读