簡體   English   中英

Java 中 System.exit(-1) 之前的 System.err.println() 錯誤消息

[英]Error Message with System.err.println() before System.exit(-1) in Java

我遇到了 Java Virtual Mashines 崩潰的問題,沒有錯誤消息。 我經常在我的代碼中做一些檢查。 出現問題,如果其中一項檢查無法完成,java 程序將無法繼續。 例如:

if(!constraint){
   System.err.println("The constraint is not fullfilled!");
   System.exit(-1);
}

我可以確定,在 JVM 被 System.exit(-1) 殺死之前,控制台上會打印一條帶有 System.err.println("...") 的錯誤消息嗎? 如果不是,這可以解釋為什么我的 JVM 崩潰而沒有錯誤消息。

System.out 將 output 引導至標准 output stream(通常映射到控制台屏幕)。 System.err 將 output 引導至標准錯誤 stream (並且默認為控制台)。 擁有這兩個的想法是標准 output 應該用於常規程序 output,標准錯誤應該用於錯誤消息。 取決於如何加載 java 程序錯誤 stream 未打印在控制台上。

兩個流都可以重定向到不同的目的地。 如果希望將 output 重定向到 output 文件並將錯誤消息重定向到不同的日志文件,則可以執行以下操作:

java MyClass > output.log 2>error.log

這會導致常規 output(使用 System.out)存儲在 output.log 中,錯誤消息(使用 System.err)存儲在 error.log 中。

另一個選項是在您的代碼中重定向輸出:

PrintStream outStream = new PrintStream(new File("outFile.txt"));
System.setOut(outStream);
System.out.println("This is a baeldung article");

在 System.err 的情況下:

PrintStream errStream = new PrintStream(new File("errFile.txt"));
System.setErr(errStream);
System.err.println("This is a baeldung article error");

System.out 和 System.err 不是檢查這個的更好的解決方案,我建議添加一個像 SL4J 這樣的記錄器來將這個記錄到適當的文件或 output 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM