Différence dans le système. sortie (0), Système.sortie (-1), Système.exit (1) en Java


J'aimerais connaître la différence entre ce qui suit en Java

System.exit(0);
System.exit(-1);
System.exit(1);

Quand dois-je utiliser le code ci-dessus de manière appropriée?

Author: ROMANIA_engineer, 2010-03-12

11 answers

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

Le code de sortie est

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

Si je suis correct, les codes de sortie n'étaient que des nombres positifs (I moyenne dans UNIX) et selon la plage:

  • 1-127 sont des codes définis par l'utilisateur (donc générés en appelant exit(n))
  • {[6] } sont des codes générés par terminaison en raison de différents signaux Unix comme SIGSEGV ou SIGTERM

Mais je ne pense pas que vous devriez vous en soucier lors du codage sur Java, c'est juste un peu d'informations. C'est utile si vous prévoyez de faire interagir vos programmes avec des outils standard.

 219
Author: Jack, 2016-05-06 09:56:14

Zero => Tout va bien

Positive => Quelque chose auquel je m'attendais pourrait potentiellement mal tourner (mauvaise ligne de commande, impossible de trouver le fichier, impossible de se connecter au serveur)

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

(les valeurs supérieures à 128 sont en fait négatives, si vous les considérez comme un binaire signé 8 bits ou un complément à deux bits)

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

 107
Author: robert, 2015-05-04 07:47:24

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 d'état .

Par convention, un code de statut non nul indique une résiliation 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 à Java

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

 39
Author: Premraj, 2017-06-17 06:25:44

Un code d'état 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.

À Partir de https://docs.oracle.com/javase/7/docs/api/java/lang/System.html.

 11
Author: Frederik Wordenskjold, 2016-08-19 18:28:06

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 terminaison infructueuse en général.

 2
Author: Purushottam Sadh, 2018-01-31 07:35:28

, 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
Author: Lova Chittumuri, 2016-12-28 14:16:51

Comme d'autres répondent 0 signifiant le succès, sinon.

Si vous utilisez le fichier bat (fenêtre) System.exit(x) aura un effet.

Le 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 --
 0
Author: nguyên, 2017-03-03 03:44:42

Un bon gotcha est tout code d'erreur > 255 sera converti en code d'erreur % 256. Il faut être particulièrement prudent à ce sujet s'ils utilisent un code d'erreur personnalisé > 255 et attendent le code d'erreur exact dans la logique de l'application. http://www.tldp.org/LDP/abs/html/exitcodes.html

 0
Author: nomad, 2017-04-07 18:31:54

La différence des nombres mis dans le système.exit() est expliqué dans d'autres réponses. mais la VRAIE DIFFÉRENCE est ce système.exit () est un code qui est renvoyé au processus d'appel. Si le programme est invoqué par le système d'exploitation, le code de retour indiquera au système d'exploitation que si le système.exit() a renvoyé 0 que tout allait bien mais si quelque chose ne s'est pas mal passé, il pourrait y avoir des gestionnaires pour cela dans le processus parent

 0
Author: parsa, 2018-01-31 07:19:55

Système.exit (0) par convention, un code d'état non nul indique une résiliation anormale.

Système.exit(1) - Cela signifie que la résiliation échoue en raison d'une erreur

 -2
Author: androminor, 2017-03-04 13:45:06
class calc{
public static void main(String 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 système.exit(0); et lorsque j'appuie sur le cas 5 il sort correctement mais lorsque j'utilise le Système.exit (1); et appuyez sur le cas 5 il se termine avec erreur et encore une fois quand j'essaie avec le cas 15 il se termine correctement par cela, j'ai appris à savoir que, lorsque nous mettons un argument int inside, il spécifie que, il prend le caractère de cette position, c'est-à-dire si je mets (4) cela signifie prendre chaîne

 -3
Author: LEGEND MORTAL, 2017-07-21 20:08:07