web-dev-qa-db-fra.com

Différence de système. exit (0), System.exit (-1), System.exit (1) en Java

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?

256
giri

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 queSIGSEGVouSIGTERM

Mais 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.

228
Jack

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

115
robert

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é.

43
Premraj

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 .

11

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.

3
Purushottam Sadh

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
1
Lova Chittumuri

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

1
nomad

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 --
0
nguyên

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.

0
parsa