简体   繁体   中英

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

I have a problem with crashed Java Virtual Mashines without error message. I often do some checks in my code. Something went wrong, if one of these checks will not be fulfilled and the java program shall not carry on. EG:

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

Can I be sure, that an error message with System.err.println("...") is printed on the console before the JVM is killed with System.exit(-1)? If not, this could explain why my JVM crashes without error message.

System.out leads the output to the standard output stream (normally mapped to the console screen). System.err leads the output to the standard error stream (and, by default to the console). The idea behind having these two is that the standard output should be used for regular program output, and standard error should be used for error messages. Depend how to load a java program the error stream is not printed on console.

Both the streams can be redirected to different destinations. If it is desired to redirect the output to an output file and error messages to a different log file, than on UNIX it can be done as follows:

java MyClass > output.log 2>error.log

This causes the regular output (using System.out) to be stored in output.log and error messages (using System.err) to be stored in error.log.

Another option is in your code redirect the outputs:

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

And in case of System.err:

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

The System.out and System.err is not a better solution to check this, I suggest to add a logger like SL4J to log this in appropriate file or output.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM