Arrête la machine virtuelle Java en cours d'exécution. L'argument sert de code d'état; par convention, un code d'état différent de zéro indique une interruption 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:
Le "0" permet à quiconque a appelé votre programme de savoir que tout s'est bien passé. Si, cependant, vous quittez en raison d'une erreur, vous devriez System.exit(1);, ou avec un autre nombre différent de zéro correspondant à l'erreur spécifique.
De plus, comme d'autres l'ont mentionné, nettoyez d'abord! Cela implique la fermeture de fichiers et d'autres ressources ouvertes.
Comme Chris l'indique, System.exit(1)(ou tout autre nombre) est si vous voulez indiquer qu'il a fermé en raison d'une erreur. System.exit(0)indique que le programme s'est fermé normalement. Vous pouvez également changer 1 en n'importe quel nombre de votre choix, puis lorsque vous exécutez votre application à partir d'un script, vous pouvez déterminer s'il y a eu une erreur.
StormPooper
10
System.exit(int i)doit être utilisé, mais je l'inclurais dans une shutdown()méthode plus générique , où vous incluriez également les étapes de "nettoyage", la fermeture des connexions de socket, les descripteurs de fichiers, puis la sortie 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 main()méthode. 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 trouvez un moyen de mettre fin à la boucle d'événement GUI (je ne sais pas si cela est possible avec AWT ou Swing), ou appelez System.exit().
L'utilisation 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.
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.
System.exit(0); return;est bien aussi, le retour empêche tout code ruther d'être exécuté avant que le système ne puisse quitter, sinon vous auriez besoin d'un indicateur (..i.e. if (!called_exit) { further code after exit statement }
Mieux: Runtime.getRuntime (). Halt (0); A parfaitement fonctionné pour moi au sein de Scala!
Gerhard Hagerer
@GerhardHagerer mais que faire si vous obtenez le runti pas courant, moi?
Dude Bro
1
De la Javadoc pour halt: "Cette méthode doit être utilisée avec une extrême prudence. Contrairement à la exitméthode, cette méthode ne provoque pas le démarrage des hooks d'arrêt et n'exécute pas les finaliseurs non invoqués si la finalisation à la sortie a été activée. Si la séquence d'arrêt a déjà lancée, cette méthode n'attend pas les hooks d'arrêt ou finaliseurs en cours d'exécution pour terminer leur travail. " En bref, vous ne devriez pas avoir besoin d'utiliser halt, vous devriez préférer exit.
Erwin Bolwidt
-1
System.exit()fera ce que vous voulez. Mais dans la plupart des situations, vous souhaitez probablement quitter un thread et laisser le thread principal actif. En faisant cela, vous pouvez mettre fin à une tâche, mais également conserver la possibilité de démarrer une autre tâche sans redémarrer l'application.
Réponses:
Vous pouvez utiliser
System.exit()
à cette fin.Selon la documentation Java 8 d'Oracle:
la source
Le "0" permet à quiconque a appelé votre programme de savoir que tout s'est bien passé. Si, cependant, vous quittez en raison d'une erreur, vous devriez
System.exit(1);
, ou avec un autre nombre différent de zéro correspondant à l'erreur spécifique.De plus, comme d'autres l'ont mentionné, nettoyez d'abord! Cela implique la fermeture de fichiers et d'autres ressources ouvertes.
la source
System.exit(1)
(ou tout autre nombre) est si vous voulez indiquer qu'il a fermé en raison d'une erreur.System.exit(0)
indique que le programme s'est fermé normalement. Vous pouvez également changer 1 en n'importe quel nombre de votre choix, puis lorsque vous exécutez votre application à partir d'un script, vous pouvez déterminer s'il y a eu une erreur.System.exit(int i)
doit être utilisé, mais je l'inclurais dans uneshutdown()
méthode plus générique , où vous incluriez également les étapes de "nettoyage", la fermeture des connexions de socket, les descripteurs de fichiers, puis la sortie avecSystem.exit(x)
.la source
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
main()
méthode. 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 trouvez un moyen de mettre fin à la boucle d'événement GUI (je ne sais pas si cela est possible avec AWT ou Swing), ou appelezSystem.exit()
.la source
L'utilisation
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.la source
Je suis d'accord avec Jon, demandez à votre application de réagir à quelque chose et appelez System.exit ().
Assurez-vous que:
la source
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.
la source
Il y a deux réponses simples à la question.
C'est la "manière professionnelle":
C'est une manière plus maladroite:
la source
System.exit(0); return;
est bien aussi, le retour empêche tout code ruther d'être exécuté avant que le système ne puisse quitter, sinon vous auriez besoin d'un indicateur (..i.e. if (!called_exit) { further code after exit statement }
la source
halt
: "Cette méthode doit être utilisée avec une extrême prudence. Contrairement à laexit
méthode, cette méthode ne provoque pas le démarrage des hooks d'arrêt et n'exécute pas les finaliseurs non invoqués si la finalisation à la sortie a été activée. Si la séquence d'arrêt a déjà lancée, cette méthode n'attend pas les hooks d'arrêt ou finaliseurs en cours d'exécution pour terminer leur travail. " En bref, vous ne devriez pas avoir besoin d'utiliserhalt
, vous devriez préférerexit
.System.exit()
fera ce que vous voulez. Mais dans la plupart des situations, vous souhaitez probablement quitter un thread et laisser le thread principal actif. En faisant cela, vous pouvez mettre fin à une tâche, mais également conserver la possibilité de démarrer une autre tâche sans redémarrer l'application.la source
System.exit (ABORT); Arrêtez le processus immédiatement.
la source
Cela devrait le faire de la bonne manière:
la source