Comment quitter une application Java depuis le programme

Quelle est la meilleure façon de quitter une application Java avec du code?

Vous pouvez utiliser System.exit() à cette fin.

Selon la documentation Java 8 d’Oracle:

public static void exit(int status)

Termine la machine virtuelle Java en cours d’exécution. L’argument sert de code d’état; par convention, un code de statut différent de zéro indique une terminaison anormale .

Cette méthode appelle la méthode exit dans la classe Runtime. Cette méthode ne retourne jamais normalement.

L’appel System.exit(n) est effectivement équivalent à l’appel:

Runtime.getRuntime().exit(n)

 System.exit(0); 

Le “0” permet à quiconque a appelé votre programme de savoir que tout s’est bien passé. Si, toutefois, vous quittez en raison d’une erreur, vous devriez System.exit(1); , ou avec un autre nombre non nul correspondant à l’erreur spécifique.

En outre, comme d’autres l’ont mentionné, nettoyez d’abord! Cela implique la fermeture de fichiers et d’autres ressources ouvertes.

System.exit(int i) doit être utilisé, mais je l’inclurais dans une méthode shutdown() plus générique, qui inclurait également les étapes de “nettoyage”, la fermeture des connexions de socket, les descripteurs de fichiers, puis la fermeture avec System.exit(x) .

System.exit() n’est généralement pas le meilleur moyen, mais cela dépend de votre application.

La manière habituelle de terminer une application est de quitter la méthode main() . Cela ne fonctionne pas quand il y a d’autres threads non-deamon en cours d’exécution, comme d’habitude pour les applications avec une interface utilisateur graphique (AWT, Swing, etc.). Pour ces applications, vous pouvez soit trouver un moyen de mettre fin à la boucle d’événement GUI (ne savez pas si cela est possible avec AWT ou Swing), ou appeler System.exit() .

Je suis d’accord avec Jon, faites que votre application réagisse à quelque chose et appelez System.exit ().

Assurez-vous que:

  • vous utilisez la valeur de sortie appropriée. 0 est la sortie normale, toute autre chose indique qu’il y avait une erreur
  • vous fermez tous les stream d’entrée et de sortie. Fichiers, connexions réseau, etc.
  • vous vous connectez ou imprimez une raison de quitter en particulier si c’est à cause d’une erreur

Utiliser dispose(); est un moyen très efficace pour fermer vos programmes.

J’ai trouvé que l’utilisation de System.exit(x) réinitialise le volet des interactions et, en supposant que vous ayez besoin de certaines informations, tout disparaît.

Il y a deux réponses simples à la question.

C’est la “manière professionnelle”:

 //This just terminates the program. System.exit(0); 

C’est une manière plus maladroite:

 //This just terminates the program, just like System.exit(0). return; 

La réponse est System.exit (), mais ce n’est pas une bonne chose à faire, car cela annule le programme. Tout nettoyage, destruction que vous avez l’intention de faire ne se produira pas.

 Runtime.getCurrentRumtime().halt(0); 

System.exit (ABORT); Quittez le processus immédiatement.

Cela devrait le faire de la manière correcte:

 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(); } } 

System.exit() fera ce que vous voulez. Mais dans la plupart des cas, vous souhaiterez probablement quitter un thread et laisser le thread principal actif. En faisant cela, vous pouvez terminer une tâche, mais aussi garder la possibilité de démarrer une autre tâche sans redémarrer l’application.