System.exit()
Немедленно завершает программу с заданным кодом выхода.
Доступно с: Java 1.0
Синтаксис
public static void exit(int status)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| status | int | Код выхода: 0 — успех, любое другое число — ошибка. |
Примеры
Остановка с кодом 1, если что-то пошло не так. Строка Started не выводится:
void main() {
IO.println("Checking config...");
boolean configFound = false;
if (!configFound) {
IO.println("Config not found");
System.exit(1);
}
IO.println("Started");
}Результат:
Checking config...
Config not foundПосле System.exit() не выполняется даже блок finally:
void main() {
try {
IO.println("in try");
System.exit(0);
} finally {
IO.println("in finally");
}
}Результат:
in tryПримечания
Код выхода видит тот, кто запустил программу: в bash — echo $?, в PowerShell — $LASTEXITCODE. Скрипты и CI-системы по нему понимают, успешно ли отработала программа. Если main просто закончился, код выхода 0, а при необработанном исключении — 1. Перед выходом выполняются обработчики Runtime.getRuntime().addShutdownHook(...). В библиотеках и серверных приложениях System.exit() не вызывают: он остановит всю JVM, а не только ваш код.
См. также
- System.getenv() — Возвращает значение переменной окружения или null, если такой переменной нет.
- Runtime.getRuntime() — Возвращает объект Runtime текущей JVM: память, число процессоров, обработчики завершения.
- return — Завершает метод и возвращает значение вызывающему коду.
Вопросы и ответы по теме
В учебнике
- Аргументы, окружение и код завершения — Как Java-программа получает настройки снаружи — аргументы командной строки, переменные окружения System.getenv, системные свойства System.getProperty и -D, код завершения System.exit.