为什么刷新在 System.err 上不起作用?

Why is flushing not working on System.err?

我正在开发一个 main class,它通过以下方式编写潜在的异常 e.printStackTrace() 并以

结束
System.err.flush();
System.out.println("\n>>> EXITING...");

问题是当异常跟踪很大时,我的退出消息仍然打印在所有错误布道的中间。

我做错了什么?

System.errSystem.out 是两个独立的流。即使您刷新输出,也只是意味着所有字符都已发送到 o/s。读取两个流的终端(?)在显示它们时可能仍会交错显示它们。

一种补救方法可能是将流连接在一起,有效地将 System.err 流写入 System.out,但是您将丢失任何在显示时区分这两个流的颜色等。

有同样的问题。我在冲洗后添加了 Thread.sleep(5) 。然后就成功了。