Exactement comment fonctionne l'application Java code de sortie de la méthode main ()?
J'ai le texte suivant doutes liés à une simple ligne de commande de l'application Java.
Donc, j'ai cette application en ligne de commande qui est startd par un main() méthode définie à l'intérieur d'un Principal classe.
Comme d'habitude cette main() méthode est définie avec cette signature:
public static void main(String[] args) {
Donc le type de retour est vide. Il devrait donc dire qu'il ne retourne aucune valeur.
Mais pourquoi lors de son exécution se termine correctement-je obtenir ce message dans le IntelliJ console?
Disconnected from the target VM, address: '127.0.0.1:54090', transport: 'socket'
Process finished with exit code 0
Exactement ce que représentent les code de sortie 0?
Je pense que cela signifie que le programme a remplir correctement son exécution sans encourir en erreur.
Alors maintenant, j'ai les 2 suivants doutes:
-
Si c'est vrai pourquoi il arrive si mon main() de retour de méthode vide?
-
Comment puis-je retourner un code de sortie différent si ma demande fin avec un message d'erreur? Il existe une norme de code de sortie de la valeur pour en finir avec les erreurs?
Tnx
System.exit(1)
Veuillez lire la documentation de la
System
classe, en particulier exit(int)
.Le code de sortie 0 est à seulement 0 par la convention utilisée pour java. Dans un cas normal, un code de sortie, puis d'autres 0 devrait être un indicateur d'une erreur, qui n'a pas besoin d'être le cas si le programmeur derrière le java script n'a pas suivi cette convention lors de l'utilisation du Système.exit();
OriginalL'auteur AndreaNobili | 2015-02-26
Vous devez vous connecter pour publier un commentaire.
La VM ferme lorsque
System.exit(exitCode)
est appeléDans le premier cas, le code de sortie est de 0. Dans le second cas, c'est le code de sortie transmis à la
exit()
méthode.N'oubliez pas que même si votre méthode main() renvoie, le programme continuera à fonctionner jusqu'à ce que le non-démon thread s'exécute plus. Et tout thread en cours d'exécution dans la machine virtuelle peut choisir de quitter explicitement.
Le code de sortie 0 signifie que tout s'est passé comme prévu. vous pouvez choisir d'utiliser tout autre code de sortie pour le signal d'un exceptionnel état de l'environnement.
Un démon fil est un fil qui s'arrête automatiquement lorsque le dernier "normal", non les fils de démon, s'arrête en cours d'exécution. Lire docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
OriginalL'auteur JB Nizet
Code de sortie du processus est ce processus de rapports de système d'exploitation que son code d'erreur.
Java concepteurs pourrait faire
main()
méthode pour retournerint
de sorte que la JVM pourrait rapport à l'OS cette valeur comme un code de sortie du processus. Mais ils ont décidé de faire de la principale nul, mais de fournir des API qui peut mettre à jour ce code à l'aide deSystem.exit(exitCode)
. L'avantage de cette solution est que le programme peut décider de sortir à n'importe quel moment et dans n'importe quel thread, non seulement dans la méthode principale et dans le thread principal.OriginalL'auteur AlexR
Un code de sortie de 0 signifie qu'il s'est achevée normalement, c'est la norme pour tous les processus, et pas seulement de java. La valeur n'est pas de retour de la méthode main (void) mais à partir de la JVM elle-même.
Une valeur différente peut être spécifié, par exemple
System.exit(1)
pour indiquer une condition d'erreur, et le programme s'arrête.OriginalL'auteur NickJ