2 回答

TA貢獻2021條經(jīng)驗 獲得超8個贊
錯誤消息通過不同的輸出流打印。標準輸出流stdout用于正常記錄/輸出,錯誤(通過 System.err.println)轉(zhuǎn)到stderr. 您的控制臺/終端同時顯示兩者,但它們不會互相等待完成打印內(nèi)容。
編輯:也許這也有幫助。
EDIT2:如果您將錯誤更改為打印到文件,您將在控制臺/終端中丟失錯誤輸出。但也許這對你沒問題?像這樣:
//set err out to print to file
PrintStream ps = new PrintStream("err.log");
System.setErr(ps);
//cause exception for testing it
String s = null;
s.length();
如果您希望將錯誤和標準輸出都打印到控制臺/終端,則無法控制兩個流的時間,因為每個打印行都是獨立的操作。

TA貢獻1906條經(jīng)驗 獲得超3個贊
String separator = "----------";
System.out.format("ID|%-30s|%-30s|birth date|%n", "name", "email");
System.out.print("--+" + separator + separator + separator
+ "+" + separator + separator + separator + "+"
+ separator + "+\n");
System.out.flush();
while ((line = br.readLine()) != null)
由于 System.out 和 System.err 來自不同的輸出流,它們不會等待對方完成。在打印語句之后立即清除緩沖區(qū)內(nèi)存可以解決問題。
添加回答
舉報