为什么刷新不能在System.err上运行?

时间:2016-04-14 17:05:57

标签: java stream java-8 printstream

我正在开发一个主要类,通过它来编写潜在的异常 e.printStackTrace()并以

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

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

我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

有同样的问题。我在刷新后添加了Thread.sleep(5)。然后它起作用了。