2016-04-14 8 views
1

私は e.printStackTrace()によって潜在的な例外を書き込み、例外トレースが大きい場合、問題は、私の出たメッセージは、まだすべての真ん中に印刷されていることをSystem.errでフラッシングが動作しないのはなぜですか?

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

で終了したメインクラスを開発していますエラー説教。

私は間違っていますか?

+4

[MCVE](http://stackoverflow.com/help/mcve)を投稿してください。 –

+0

複数のスレッドが関与していますか? – AJNeufeld

+0

私のプライベートコードは、異なる遅延を持つ異なる操作を使用し、バッファがいっぱいになる可能性があり、すべての端末がその性能を持つため、確定的ではないと恐れています。私がその状況に達するまでは少しヒットしてミスしているので、ベンチマークが必要だとは思わない。それは概念的な問題でなければならない。シングルスレッドで、3行で論理的に複製可能です。 – Whimusical

答えて

2

System.errおよびSystem.outは、2つの別々のストリームです。出力をフラッシュしても、すべての文字がo/sに送信されたことを意味します。両方のストリームを読み取っているターミナル(?)は、2つのストリームを表示しているときに2つのストリームをインターリーブすることがあります。

System.errストリームをSystem.outに書き込むことを効果的に指示する措置がありますが、表示されたときに2つのストリームを区別する色づけなどが失われます。

関連する問題