Valeur de retour d'un code Java
il existe une classe Java qui crée une requête POST et l'envoie à un servlet. La méthode principale du fichier de classe (test) ressemble à quelque chose comme ceci:
public static void main(String[] args) throws IOException {
// Code logic goes here...
// No return Statement
}
ceci est appelé à partir D'un script KornShell (ksh) quelque chose comme ceci:
retcode=`$CLK_JAVA_PATH -cp $CLASSPATH test ${PASSWORD} ${HOSTNAME} ${TOOLSET}`
if [ $? != "0" ];then
echo "ERROR:
echo "${retcode}"
else
echo "${SCRIPT} Success"
fi
retcode
a toujours la valeur "2" indépendante de si le code échoue ou réussit.
Ma question Est que puisque le type de retour de ma méthode principale est "null" pourquoi le code renvoie-t-il une certaine valeur?
6 réponses
La valeur de retour d'une application Java est la valeur de retour de main
méthode, parce qu'une application Java ne se termine pas nécessairement quand elle est main
la méthode a terminé l'exécution.
au lieu de cela, la JVM se termine lorsqu'il n'y a plus de threads Non-daemon en cours d'exécution ou lorsque System.exit()
est appelée.
Et System.exit()
est aussi le seul moyen de spécifier la valeur de retour: l'argument passé à System.exit()
sera utilisée comme valeur de retour de la Processus JVM sur la plupart des systèmes D'exploitation.
fin de votre main()
avec cette méthode:
System.exit(0);
s'assurer de deux choses:
- que votre application Java sort vraiment quand la fin de
main
est atteint et - que la valeur de retour du processus JVM est 0
les programmes Java ne renvoient pas de code de sortie au système d'exploitation en retournant une valeur de main
, comme on le fait en C et C++. Vous pouvez quitter le programme et spécifier le code de sortie en appelant System.exit(code);
par exemple:
// Returns exit code 2 to the operating system
System.exit(2);
System.exit(0);
cela renvoie le code d'erreur 0 (Tout s'est bien passé). Système.exit Doc
Utiliser
System.exit( someNumber );
Cela donnera à votre application le contrôle de la valeur de retour vue par le système D'exploitation.
Votre programme toujours renvoie un code de retour après avoir quitté. Dans les programmes normaux, si vous ne spécifiez pas de code de retour, il retournera zéro (Cela inclut la définition du type de retour à void
).
Java, cependant, aime être spécial! Java ne retournera pas le code de retour que vous renvoyez à la méthode principale, mais il retournera du code de retour quand la JVM sortira (cela tient compte des programmes multithread), et retournera quel System.Exit(returnCode);
appel spécifier.
vous n'obtenez pas le statut de sortie, c'est ce que $?
contient. Vous êtes l'obtention de la norme, tout ce qui est écrit dans System.out
.