Qual é a melhor maneira de encerrar um aplicativo Java com código?
Qual é a melhor maneira de encerrar um aplicativo Java com código?
Respostas:
Você pode usar System.exit()para esse fim.
De acordo com a documentação Java 8 da Oracle:
public static void exit(int status)Encerra a Java Virtual Machine em execução no momento. O argumento serve como um código de status; por convenção, um código de status diferente de zero indica encerramento anormal .
Este método chama o método de saída na classe Runtime. Este método nunca retorna normalmente.
A chamada
System.exit(n)é efetivamente equivalente à chamada:
Runtime.getRuntime().exit(n)
System.exit(0);
O "0" permite que quem ligou para o seu programa saiba que tudo deu certo. Se, no entanto, você estiver encerrando devido a um erro, deverá System.exit(1);ou com outro número diferente de zero correspondente ao erro específico.
Além disso, como outros já mencionaram, limpe primeiro! Isso envolve o fechamento de arquivos e outros recursos abertos.
System.exit(1)(ou qualquer outro número) é se você deseja indicar que ele foi fechado devido a um erro. System.exit(0)indica que o programa foi fechado normalmente. Você também pode alterar 1 para qualquer número que desejar e, ao executar seu aplicativo a partir de um script, é possível determinar se houve um erro.
System.exit() geralmente não é o melhor caminho, mas depende da sua aplicação.
A maneira usual de finalizar um aplicativo é sair do main()método. Isso não funciona quando há outros threads que não são daemon em execução, como é usual para aplicativos com uma interface gráfica do usuário (AWT, Swing etc.). Para esses aplicativos, você encontra uma maneira de terminar o loop de eventos da GUI (não sabe se isso é possível com o AWT ou o Swing) ou invoca System.exit().
Concordo com Jon, faça com que seu aplicativo reaja a algo e chame System.exit ().
Tenha certeza disso:
A resposta é System.exit (), mas não é uma boa coisa a fazer, pois isso interrompe o programa. Qualquer limpeza, destruição que você pretende fazer não acontecerá.
Há duas respostas simples para a pergunta.
Esta é a "maneira profissional":
//This just terminates the program.
System.exit(0);
Esta é uma maneira mais desajeitada:
//This just terminates the program, just like System.exit(0).
return;
System.exit(0); return;também é bom, o retorno impede que qualquer código rotineiro seja executado antes que o sistema possa sair, caso contrário você precisaria de um sinalizador (..i.e. if (!called_exit) { further code after exit statement }
Runtime.getCurrentRumtime().halt(0);
halt: "Este método deve ser usado com extrema cautela. Ao contrário do exitmétodo, este método não faz com que ganchos de desligamento sejam iniciados e não executa finalizadores não solicitados se a finalização na saída estiver ativada. Se a sequência de desligamento tiver sido ativada. já iniciado, esse método não espera que nenhum gancho ou finalizador de encerramento em execução termine seu trabalho ". Em suma, você não deve usar halt, você deve preferir exit.
System.exit()fará o que você quiser. Mas na maioria das situações, você provavelmente deseja sair de um encadeamento e deixar o encadeamento principal ativo. Ao fazer isso, você pode encerrar uma tarefa, mas também manter a capacidade de iniciar outra tarefa sem reiniciar o aplicativo.
System.exit (ABORT); Sair é o processo imediatamente.
Isso deve ser feito da maneira correta:
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();
}
}