Ich möchte den Unterschied zwischen den folgenden in Java kennen
System.exit(0);
System.exit(-1);
System.exit(1);
Wann muss ich den obigen Code entsprechend verwenden?
java
system.exit
Giri
quelle
quelle
Antworten:
Der Parameter exit sollte sich qualifizieren, wenn die Ausführung des Programms gut oder schlecht verlaufen ist. Es ist eine Art Vererbung älterer Programmiersprachen, bei denen es nützlich ist zu wissen, ob etwas schief gelaufen ist und was schief gelaufen ist.
Exit-Code ist
0
als die Hinrichtung gut ging;1
,-1
,whatever != 0
Wenn ein Fehler aufgetreten ist , können Sie verschiedene Werte für verschiedene Arten von Fehlern verwenden.Wenn ich richtig bin, waren die Exit-Codes früher nur positive Zahlen (ich meine unter UNIX) und nach Bereich:
1-127
sind benutzerdefinierte Codes (also durch Aufrufen generiertexit(n)
)128-255
sind Codes, die durch Terminierung aufgrund unterschiedlicher Unix-Signale wie SIGSEGV oder SIGTERM generiert werdenAber ich denke nicht, dass Sie sich beim Codieren auf Java darum kümmern sollten, es sind nur ein paar Informationen. Dies ist nützlich, wenn Sie Ihre Programme mit Standardwerkzeugen interagieren lassen möchten.
quelle
java MyApp && echo success
druckt „Erfolg“ iff MeineAnw einen Exit - Code von 0, das heißt , wenn es nenntexit(0)
oder einfach erreicht das Ende des Hauptverfahrens ohne einen Fehler.Zero
=> Alles in OrdnungPositive
=> Etwas, von dem ich erwartet hatte, dass es möglicherweise schief gehen könnte, ging schief (schlechte Befehlszeile, Datei kann nicht gefunden werden, Verbindung zum Server konnte nicht hergestellt werden)Negative
=> Etwas , das ich gar nicht erwarten , ging schief (Systemfehler - unerwartete Ausnahme - von außen erzwungene Beendigung zBkill -9
)(Werte größer als 128 sind tatsächlich negativ, wenn Sie sie als 8-Bit-Binärzeichen mit Vorzeichen oder als Zweierkomplement betrachten.)
Hier gibt es eine Menge guter Standard-Exit-Codes
quelle
kill -15
) führen häufig zu Exit-Code128+signal
, können aber (abgesehen von 9) behandelt werden und Geben Sie einen anderen Exit-Code zurück. Das-
inkill -15
is markiert die Zahl als Signal und nicht als pid, es macht das Signal nicht negativ.System.exit(-1)
und dann in Ihrer Shell, erhaltenecho $?
Sie '255'. Aus diesem Grund habe ich gesagt, dass negative Zahlen Systemfehler sind, nicht wegen des '-' im Kill-Parameter. Hast du ernsthaft gedacht, dass ich das dachte? Aber danke, dass Sie den Mechanismus erklärt haben, mit dem Bash diese Codes erstellt.System.exit(system call)
Beendet die aktuell ausgeführte virtuelle Java-Maschine durch Initiieren ihrer Herunterfahrsequenz. Das Argument dient als Statuscode .Konventionell zeigt ein Statuscode ungleich Null eine abnormale Beendigung an.
Lesen Sie mehr bei Java
Auf Unix- und Linux-Systemen
0
für erfolgreiche Ausführungen und1
höher für fehlgeschlagene Ausführungen.quelle
EXIT_*
existiert nicht in Java.Ein Exit-Statuscode ungleich Null weist normalerweise auf eine abnormale Beendigung hin. Wenn
n != 0
, ist es Sache des Programmierers, den verschiedenen n eine Bedeutung zuzuweisen.Von https://docs.oracle.com/javase/7/docs/api/java/lang/System.html .
quelle
exit(0)
Wird im Allgemeinen verwendet, um eine erfolgreiche Beendigung anzuzeigen.exit(1)
oderexit(-1)
oder ein anderer Wert ungleich Null zeigt im Allgemeinen eine erfolglose Beendigung an.quelle
Hier ist die Antwort.
quelle
Ein gutes Problem ist, dass jeder Fehlercode> 255 in den Fehlercode% 256 konvertiert wird. Dies sollte besonders vorsichtig sein, wenn ein benutzerdefinierter Fehlercode> 255 verwendet wird und der genaue Fehlercode in der Anwendungslogik erwartet wird. http://www.tldp.org/LDP/abs/html/exitcodes.html
quelle
Der Unterschied der in system.exit () eingegebenen Zahlen wird in anderen Antworten erläutert. Der WIRKLICHE UNTERSCHIED ist jedoch, dass System.exit () ein Code ist, der an den aufrufenden Prozess zurückgegeben wird. Wenn das Programm vom Betriebssystem aufgerufen wird, teilt der Rückkehrcode dem Betriebssystem mit, dass, wenn system.exit () 0 zurückgibt, alles in Ordnung ist, aber wenn nichts schief gelaufen ist, möglicherweise einige Handler dafür im übergeordneten Prozess vorhanden sind
quelle
Wie andere antworten,
0
bedeutet Erfolg, sonst.Wenn Sie Bat-Datei (Fenster) verwenden
System.exit(x)
, wirkt sich dies aus.Code Java (myapp):
}}
Fledermausdatei:
quelle
System.exit (0) Konventionell zeigt ein Statuscode ungleich Null eine abnormale Beendigung an.
System.exit (1) - Dies bedeutet, dass die Beendigung aufgrund eines Fehlers nicht erfolgreich war
quelle
}}
Im obigen Code, wenn sein System.exit (0); und wenn ich Fall 5 drücke, wird es richtig beendet, aber wenn ich System.exit (1) benutze; und drücke Fall 5, es wird mit einem Fehler beendet und wieder, wenn ich es mit Fall 15 versuche, wird es richtig beendet, dadurch habe ich erfahren, dass, wann immer wir ein int-Innenargument setzen, es angibt, dass es das Zeichen von dieser Position nimmt, dh wenn ich es setze (4) dass es bedeutet, das fünfte Zeichen von dieser Zeichenfolge zu nehmen, wenn es (3) ist, dann bedeutet es, dass das vierte Zeichen von dieser eingegebenen Zeichenfolge genommen wird
quelle