J'aimerais connaître la différence entre les éléments suivants en Java
System.exit(0);
System.exit(-1);
System.exit(1);
Quand dois-je utiliser le code ci-dessus de manière appropriée?
Le paramètre exit devrait être qualifié si l'exécution du programme a été bonne ou mauvaise. C'est une sorte d'hérédité d'anciens langages de programmation où il est utile de savoir si quelque chose ne va pas et ce qui ne va pas.
Le code de sortie est
0
quand l'exécution s'est bien passée;1
, -1
, whatever != 0
lorsqu’une erreur s’est produite, vous pouvez utiliser différentes valeurs pour différents types d’erreurs.Si je ne me trompe pas, les codes de sortie n'étaient autrefois que des nombres positifs (je veux dire sous UNIX) et par plage:
1-127
sont des codes définis par l'utilisateur (ainsi générés en appelant exit(n)
)128-255
sont des codes générés par la terminaison en raison de différents signaux unix tels queSIGSEGVouSIGTERMMais je ne pense pas que vous devriez vous soucier de coder en Java, c'est juste un peu d'information. C'est utile si vous envisagez de faire interagir vos programmes avec des outils standard.
Zero
=> Tout va bien
Positive
=> Quelque chose que je pensais potentiel pourrait mal tourner a mal tourné (ligne de commande incorrecte, fichier introuvable, impossible de se connecter au serveur)
Negative
=> Quelque chose que je ne m'attendais pas du tout a mal tourné (erreur système - exception non anticipée - terminaison forcée de manière externe, par exemple kill -9
)
(les valeurs supérieures à 128 sont en réalité négatives, si vous les considérez comme des binaires signés de 8 bits ou comme complément de deux)
Il y a une charge de bons codes de sortie standard ici
System.exit(system call)
termine la machine virtuelle Java en cours d'exécution en lançant sa séquence d'arrêt. L'argument sert de code status.
Par convention, un code d'état différent de zéro indique une fin anormale.
System.exit(0) or EXIT_SUCCESS; ---> Success
System.exit(1) or EXIT_FAILURE; ---> Exception
System.exit(-1) or EXIT_ERROR; ---> Error
Lire la suite sur Java
Sur les systèmes Unix et Linux, 0
pour les exécutions réussies et 1
ou supérieur pour les exécutions ayant échoué.
Un code d'état de sortie non nul indique généralement une fin anormale. Si n != 0
, il appartient au programmeur d'appliquer un sens aux différents n.
De https://docs.Oracle.com/javase/7/docs/api/Java/lang/System.html .
exit(0)
généralement utilisé pour indiquer une terminaison réussie. exit(1)
ou exit(-1)
ou toute autre valeur différente de zéro indique un arrêt non réussi en général.
Voici la réponse.
System.exit(0);// normal termination - Successful - zero
System.exit(-1);//Exit with some Error
System.exit(1);//one or any positive integer // exit with some Information message
Un code d'erreur positif> 255 sera converti en code d'erreur% 256 . Si vous utilisez un code d'erreur personnalisé> 255 et attendez le code d'erreur exact dans la logique d'application, faites particulièrement attention à ce sujet http://www.tldp.org/LDP/abs/html/exitcodes.html
Comme les autres répondent 0
qui signifie succès, sinon.
Si vous utilisez un fichier bat (fenêtre), System.exit(x)
sera appliqué.
Code Java (myapp):
if (error < 2){
help();
System.exit(-1);
}
else{
doSomthing();
System.exit(0);
}
}
fichier chauve-souris:
Java -jar myapp.jar
if %errorlevel% neq 0 exit /b %errorlevel%
rem -- next command if myapp is success --
la différence des nombres mis dans system.exit () est expliquée dans d'autres réponses. mais la REAL DIFFERENCE est que System.exit () est un code qui est renvoyé au processus appelant. Si le programme est appelé par le système d'exploitation, le code de retour indiquera au système d'exploitation que si system.exit () renvoie 0, tout va bien, mais que si quelque chose ne va pas, il peut y avoir des gestionnaires pour cela dans le processus parent.