为什么刷新不能在System.err上工作?

问题描述:

我正在开发通过的 e.printStackTrace()手段写道潜在的异常并与为什么刷新不能在System.err上工作?

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

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

我做错了什么?

+4

请发布[MCVE](http://*.com/help/mcve)。 –

+0

是否涉及多个线程? – AJNeufeld

+0

我担心它不是确定性的,因为我的私人代码使用不同的延迟操作,并且缓冲区可以是满或者不是,并且每个终端都有它的性能。这是一个打击和思念,直到我到达的情况,所以我不认为需要基准。这一定是一个概念性问题。来吧它的单线程,并在逻辑上可复制3行。 – Whimusical

System.errSystem.out是两个分开的流。即使你刷新输出,这也意味着所有的字符都被发送到了o/s。读取两个流的终端(?)在显示它们时可能仍会交织两个流。

一个补救措施可能是将流连接在一起,有效地指导System.err流写入System.out,但是在显示时您将失去区分两个流的任何着色等。