Как лучше всего закрыть приложение Java с помощью кода?
Как выйти из Java-приложения из программы
Ответы (12)
Вы можете использовать System.exit()
для этого.
Согласно документации Oracle Java 8:
public static void exit(int status)
Завершает работу текущей виртуальной машины Java. Аргумент служит кодом состояния; по соглашению ненулевой код состояния указывает на аварийное завершение.
Этот метод вызывает метод выхода в классе Runtime. Этот метод никогда не возвращает нормально.
Вызов
System.exit(n)
фактически эквивалентен вызову:
Runtime.getRuntime().exit(n)
System.exit(0);
«0» дает знать, кто звонил в вашу программу, что все прошло нормально. Если, однако, вы выходите из-за ошибки, вам следует System.exit(1);
или с другим ненулевым числом, соответствующим конкретной ошибке.
Кроме того, как уже упоминали другие, сначала очистите! Это включает в себя закрытие файлов и других открытых ресурсов.
System.exit(1)
(или любое другое число) означает, что вы хотите указать, что он закрыт из-за ошибки. System.exit(0)
указывает, что программа закрылась нормально. Вы также можете изменить 1 на любое число, которое вам нравится, тогда, когда вы запускаете свое приложение из сценария, вы можете определить, произошла ли ошибка.
- person StormFoo; 24.11.2011
System.exit(int i)
должен использоваться, но я бы включил его в более общий метод shutdown()
, в который вы также должны включить шаги «очистки», закрытие соединений сокетов, дескрипторы файлов, затем выход с помощью System.exit(x)
.
System.exit()
обычно не лучший способ, но это зависит от вашего приложения.
Обычный способ завершить приложение - выйти из метода main()
. Это не работает, когда работают другие потоки, не относящиеся к deamon, как это обычно бывает для приложений с графическим пользовательским интерфейсом (AWT, Swing и т. Д.). Для этих приложений вы либо находите способ завершить цикл событий графического интерфейса пользователя (не знаю, возможно ли это с помощью AWT или Swing), либо вызываете System.exit()
.
Использование dispose();
- очень эффективный способ закрытия ваших программ.
Я обнаружил, что использование System.exit(x)
сбрасывает панель взаимодействий и, если вам нужна какая-то информация, она исчезает.
Я согласен с Джоном, пусть ваше приложение на что-то отреагирует и вызовет System.exit ().
Убедитесь, что:
- вы используете соответствующее значение выхода. 0 - нормальный выход, все остальное указывает на ошибку
- вы закрываете все потоки ввода и вывода. Файлы, сетевые подключения и т. Д.
- вы регистрируете или распечатываете причину выхода, особенно если это из-за ошибки
Ответ - System.exit (), но это не лучший вариант, поскольку это приводит к прерыванию программы. Никакой уборки, разрушения, которое вы намереваетесь сделать, не произойдет.
На этот вопрос есть два простых ответа.
Это «Профессиональный путь»:
//This just terminates the program.
System.exit(0);
Это более неуклюжий способ:
//This just terminates the program, just like System.exit(0).
return;
System.exit(0); return;
тоже хорошо, return предотвращает запуск любого ruther кода до того, как Система сможет выйти, иначе вам понадобится флаг (.. i.e. if (!called_exit) { further code after exit statement }
- person ycomp; 15.04.2016
System.exit()
будет делать то, что вы хотите. Но в большинстве ситуаций вы, вероятно, захотите выйти из потока и оставить основной поток живым. Таким образом вы можете завершить задачу, но при этом сохранить возможность запускать другую задачу без перезапуска приложения.
System.exit (ABORT); Немедленно прекратите процесс.
Это должно происходить правильно:
mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
mainFrame.addWindowListener(new WindowListener() {
@Override
public void windowClosing(WindowEvent e) {
if (doQuestion("Really want to exit?")) {
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.dispose();
}
}
halt
: этот метод следует использовать с особой осторожностью. В отличие от метода exit
, этот метод не вызывает запуск обработчиков завершения работы и не запускает неактивированные финализаторы, если включена финализация при выходе. Если последовательность выключения уже была инициирована, этот метод не ожидает, пока какие-либо запущенные обработчики выключения или финализаторы завершат свою работу. Короче говоря, вам не нужно использовать halt
, вы должны предпочесть exit
.
- person Erwin Bolwidt; 11.06.2017