Какой лучший способ выйти из приложения Java с кодом?
Какой лучший способ выйти из приложения Java с кодом?
Ответы:
Вы можете использовать System.exit()для этой цели.
Согласно документации Oracle 8 к Java:
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 на любое число, которое вам нравится, тогда, когда вы запускаете приложение из скрипта, вы можете определить, произошла ли ошибка.
System.exit() обычно это не лучший способ, но это зависит от вашего приложения.
Обычный способ завершить приложение - выйти из main()метода. Это не работает, когда работают другие потоки не-deamon, как обычно для приложений с графическим интерфейсом пользователя (AWT, Swing и т. Д.). Для этих приложений вы либо находите способ завершить цикл обработки событий GUI (не знаю, возможно ли это с помощью AWT или Swing), либо вызываете System.exit().
Я согласен с Джоном, чтобы ваше приложение реагировало на что-то и вызывало System.exit ().
Будьте уверены, что:
Ответ - 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;это тоже хорошо, возврат предотвращает запуск любого кода рутера до того, как система может выйти, иначе вам понадобится флаг (..i.e. if (!called_exit) { further code after exit statement }
Runtime.getCurrentRumtime().halt(0);
halt: «Этот метод должен использоваться с особой осторожностью. В отличие от exitметода, этот метод не вызывает запуска ловушек завершения работы и не запускает непроверенные финализаторы, если включена финализация при выходе. Если последовательность выключения имеет уже запущен, тогда этот метод не ожидает, пока какие-либо запущенные обработчики завершения работы или финализаторы завершат свою работу. " Короче говоря, вам не нужно использовать halt, вы должны предпочитать exit.
System.exit()будет делать то, что вы хотите. Но в большинстве случаев вы, вероятно, захотите выйти из потока и оставить основной поток живым. Делая это, вы можете завершить задачу, а также сохранить возможность запуска другой задачи без перезапуска приложения.
System.exit (ПРЕРЫВАНИЕ); Выйти из процесса немедленно.
Это должно сделать это правильно:
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();
}
}