Exit codes in Java – System.exit() method
This post will discuss the System exit codes in Java.
The System.exit(int) is the conventional and convenient means to terminate the currently running Java virtual machine by initiating its shutdown sequence. The argument of the exit() method serves as a status code to denotes the termination status. The argument can be either zero or nonzero:
1. Zero
The zero status code should be used when the program execution went fine, i.e., the program is terminated successfully.
2. Non-Zero
A nonzero status code indicates abnormal termination. Java allows us to use different values for different kinds of errors. A nonzero status code can be further positive or negative:
Positive status codes are often used for user-defined codes to indicate a particular exception.
Negative status codes are system generated error codes. They are generated due to some unanticipated exception, system error, or forced termination of the program.
- There are no pre-defined constants in Java to indicate SUCCESS and FAILURE messages.
- We should always use the proper status codes if our application interact with some tools or the program is called within a script.
- System.exit() method internally calls exit() method of the Runtime class. Therefore, the call System.exit(n) is effectively equivalent to the call: Runtime.getRuntime().exit(n) .
That’s all about exit codes in Java.
Average rating 4.47 /5. Vote count: 55
No votes so far! Be the first to rate this post.
We are sorry that this post was not useful for you!
Tell us how we can improve this post?
System.exit(). Какой код выхода использовать?
Что является причиной того, что java программа прекращает любую свою активность и завершает свое выполнение? Основных причин может быть 2 (JLS Секция 12.8):
- Все потоки, которые не являются демонами, выполнены;
- Какой то из потоков вызывает метод exit() класса Runtime или же класса System и
SecurityManager дает добро на выполнение exit().
Именно значение 0 и возвращает JVM в первом, вышеописанном случае при своем завершении.
Как это можно проверить?
Тут нам на помощь приходит параметр командной строки ERRORLEVEL, который позволяет получить код выхода программы, которую мы запускали последней.
Как видим со скриншота код выхода равен 0.
Переходим ко второму случаю, с использованием метода exit().
Какие значения можно передавать в метод exit? Исходя из документации:
The argument serves as a status code; by convention, a nonzero status code indicates abnormal termination.
Ага, варианта два: либо 0, либо любое ненулевое значение. Второй вариант можем разбить еще на два под варианта: любое отрицательное число и любое положительное число типа int.
Как видим, родительский процесс снова получил информацию об успешном завершении JVM.
А что же с nonzero значениями? Что, когда и в каком случае передавать?
Тут все просто — никаких требований для nonzero значений нету и следует руководствоваться лишь одним общим правилом:
- Возвращаем код выхода со значением >0 в случае, если мы ожидали что что то может случится нехорошее и оно таки случилось, например: некорректные данные в args[], или не удалось найти какой то важный для работы приложения файл, или не удалось подключиться к серверу и тд.
- Возвращаем код выхода со значением
И последний вариант: если нам известно, что код выхода дополнительно обрабатывается и дабы не выдумывать значения самому можно позаимствовать значения, которые используются на уровни ОС.
Например, для ОС семейства Windows существует целый список из 15999 кодов: System Error Codes, для семейства Linux свой список: sysexits.h