Différence dans le 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?

Le paramètre de sortie doit être qualifié si l’exécution du programme s’est bien ou mal déroulée. C’est une sorte d’hérédité des anciens langages de programmation où il est utile de savoir si quelque chose s’est mal passé et ce qui s’est mal passé.

Le code de sortie est

  • 0 quand l’exécution s’est bien passée;
  • 1 , -1 , peu whatever != 0 lorsqu’une erreur s’est produite, vous pouvez utiliser différentes valeurs pour différents types d’erreurs.

Si je suis correct, les codes de sortie étaient juste des nombres positifs (je veux dire sous UNIX) et selon la plage:

  • 1-127 sont des codes définis par l’utilisateur (générés par l’appel de exit(n) )
  • 128-255 sont des codes générés par la terminaison en raison de différents signaux Unix tels que SIGSEGV ou SIGTERM

Mais je ne pense pas que vous devriez vous soucier de coder sur Java, c’est juste un peu d’information. C’est utile si vous prévoyez d’interagir avec des outils standard.

Zero => Tout va bien

Positive => Quelque chose que j’espérais risquerait de se tromper (ligne de commande incorrecte, fichier introuvable, connexion au serveur impossible)

Negative => Quelque chose que je ne m’attendais pas du tout s’est mal passé (erreur système – exception imprévue – terminaison forcée externe, par exemple kill -9 )

(les valeurs supérieures à 128 sont en réalité négatives, si vous les considérez comme des binarys signés à 8 bits ou des compléments à deux)

Il y a une charge de bons codes de sortie standard ici

System.exit(system call) met fin à la machine virtuelle Java en cours d’exécution en lançant sa séquence d’arrêt. L’argument sert de code d’état .

Par convention, un code de statut différent de zéro indique une terminaison anormale.

  System.exit(0) or EXIT_SUCCESS; ---> Success System.exit(1) or EXIT_FAILURE; ---> Exception System.exit(-1) or EXIT_ERROR; ---> Error 

Lire plus à Java

Sur les systèmes Unix et Linux, 0 pour les exécutions réussies et 1 ou plus pour les exécutions échouées.

Un code de statut de sortie non nul indique généralement une terminaison anormale. Si n != 0 , c’est au programmeur d’appliquer une signification 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 la fin réussie. exit(1) ou exit(-1) ou toute autre valeur non nulle indique une résiliation infructueuse 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 

Comme d’autres répondent 0 signifie le succès, sinon.

Si vous utilisez un fichier bat (fenêtre) System.exit(x) cela affectera.

Code java (myapp):

 if (error < 2){ help(); System.exit(-1); } else{ doSomthing(); System.exit(0); } 

}

fichier bat:

 java -jar myapp.jar if %errorlevel% neq 0 exit /b %errorlevel% rem -- next command if myapp is success -- 

Un bon piège est que tout code d’erreur> 255 sera converti en code d’erreur% 256. Il convient d’être particulièrement prudent s’il utilise un code d’erreur personnalisé> 255 et attend le code d’erreur exact dans la logique de l’application. http://www.tldp.org/LDP/abs/html/exitcodes.html

la différence des nombres mis dans system.exit () est expliquée dans d’autres réponses. mais la vraie différence 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 retour indiquera au système d’exploitation que si system.exit () a renvoyé 0 que tout allait bien, mais si quelque chose n’allait pas, il pourrait y avoir des gestionnaires dans le processus parent.

System.exit (0) par convention, un code de statut différent de zéro indique une terminaison anormale.

System.exit (1) -Il signifie que la terminaison a échoué en raison d’une erreur

 class calc{ public static void main(Ssortingng args[]) { int a, b, c; char ch; do{ Scanner s=new Scanner(System.in); System.out.print("1. Addition\n"); System.out.print("2. Substraction\n"); System.out.print("3. Multiplication\n"); System.out.print("4. Division\n"); System.out.print("5. Exit\n\n"); System.out.print("Enter your choice : "); ch=s.next().charAt(0); switch (ch) { case '1' : Addition chose1=new Addition(); chose1.add(); break; case '2' : Substraction chose2=new Substraction(); chose2.sub(); break; case '3' : Multiplication chose3= new Multiplication(); chose3.multi(); break; case '4' : Division chose4=new Division(); chose4.divi(); break; case '5' : System.exit(0); break; default : System.out.print("wrong choice!!!"); break; } System.out.print("\n--------------------------\n"); }while(ch !=5); } 

}

Dans le code ci-dessus lorsque son System.exit (0); et quand j’appuie sur la case 5, il se ferme correctement mais quand j’utilise System.exit (1); et appuyez sur le cas 5, il quitte avec erreur et encore quand j’essaye avec le cas 15 il sort correctement par ceci je dois savoir que, chaque fois que nous mettons n’importe quel argument int à l’intérieur il spécifie que, il prend le caractère de cette position c’est-à-dire si je mets (4) que cela signifie prendre le 5ème caractère de cette chaîne si son (3) alors cela signifie prendre le 4ème caractère de cette chaîne entrée