Beendet die aktuell ausgeführte Java Virtual Machine. Das Argument dient als Statuscode. Gemäß der Konvention zeigt ein Statuscode ungleich Null eine abnormale Beendigung an .
Diese Methode ruft die Exit-Methode in der Klasse Runtime auf. Diese Methode wird nie normal zurückgegeben.
Der Anruf System.exit(n)entspricht effektiv dem Anruf:
Die "0" zeigt jedem, der Ihr Programm aufgerufen hat, an, dass alles in Ordnung war. Wenn Sie jedoch aufgrund eines Fehlers beenden, sollten Sie System.exit(1);oder mit einer anderen Zahl ungleich Null, die dem spezifischen Fehler entspricht.
Wie andere bereits erwähnt haben, räumen Sie zuerst auf! Dazu müssen Dateien und andere offene Ressourcen geschlossen werden.
Wie Chris feststellt System.exit(1)(oder eine andere Nummer), wenn Sie angeben möchten, dass es aufgrund eines Fehlers geschlossen wurde. System.exit(0)zeigt an, dass das Programm normal geschlossen wurde. Sie können 1 auch in eine beliebige Zahl ändern. Wenn Sie Ihre Anwendung über ein Skript ausführen, können Sie feststellen, ob ein Fehler aufgetreten ist.
StormPooper
10
System.exit(int i)ist zu verwenden, aber ich würde es in eine allgemeinere shutdown()Methode aufnehmen, in der Sie auch "Bereinigungs" -Schritte einschließen, Socket-Verbindungen schließen, Dateideskriptoren erstellen und dann mit beenden System.exit(x).
System.exit() ist normalerweise nicht der beste Weg, aber es hängt von Ihrer Anwendung ab.
Die übliche Art, eine Anwendung zu beenden, besteht darin, die main()Methode zu beenden . Dies funktioniert nicht, wenn andere Nicht-Deamon-Threads ausgeführt werden, wie dies für Anwendungen mit einer grafischen Benutzeroberfläche (AWT, Swing usw.) üblich ist. Für diese Anwendungen finden Sie entweder eine Möglichkeit, die GUI-Ereignisschleife zu beenden (Sie wissen nicht, ob dies mit AWT oder Swing möglich ist) oder aufzurufen System.exit().
Die Verwendung dispose();ist eine sehr effektive Methode zum Schließen Ihrer Programme.
Ich habe festgestellt, dass durch die Verwendung das System.exit(x)Zurücksetzen des Interaktionsbereichs und die Annahme, dass Sie einige der dort benötigten Informationen benötigen, alles verschwindet.
Die Antwort lautet System.exit (), ist aber keine gute Sache, da dies das Programm abbricht. Eine Reinigung, Zerstörung, die Sie beabsichtigen, wird nicht stattfinden.
System.exit(0); return;ist auch gut, die Rückgabe verhindert, dass ein anderer Code ausgeführt wird, bevor das System beendet werden kann, andernfalls benötigen Sie ein Flag (..i.e. if (!called_exit) { further code after exit statement }
Besser: Runtime.getRuntime (). Halt (0); Hat bei Scala perfekt für mich funktioniert!
Gerhard Hagerer
@GerhardHagerer aber was ist wenn du das nicht aktuelle runti bekommst, ich?
Dude Bro
1
Aus dem Javadoc für halt: "Diese Methode sollte mit äußerster Vorsicht verwendet werden. Im Gegensatz zur exitMethode führt diese Methode nicht zum Starten von Shutdown-Hooks und führt keine nicht aufgerufenen Finalizer aus, wenn Finalization-on-Exit aktiviert wurde. Wenn die Shutdown-Sequenz aktiviert ist Diese Methode wurde bereits initiiert und wartet nicht darauf, dass laufende Shutdown-Hooks oder Finalizer ihre Arbeit beenden. " Kurz gesagt, Sie sollten nicht verwenden müssen halt, sollten Sie bevorzugen exit.
Erwin Bolwidt
-1
System.exit()wird tun was du willst. In den meisten Situationen möchten Sie jedoch wahrscheinlich einen Thread beenden und den Hauptthread am Leben lassen. Auf diese Weise können Sie eine Aufgabe beenden, aber auch die Möglichkeit behalten, eine andere Aufgabe zu starten, ohne die App neu zu starten.
Antworten:
Sie können
System.exit()
für diesen Zweck verwenden.Laut der Java 8-Dokumentation von oracle:
quelle
Die "0" zeigt jedem, der Ihr Programm aufgerufen hat, an, dass alles in Ordnung war. Wenn Sie jedoch aufgrund eines Fehlers beenden, sollten Sie
System.exit(1);
oder mit einer anderen Zahl ungleich Null, die dem spezifischen Fehler entspricht.Wie andere bereits erwähnt haben, räumen Sie zuerst auf! Dazu müssen Dateien und andere offene Ressourcen geschlossen werden.
quelle
System.exit(1)
(oder eine andere Nummer), wenn Sie angeben möchten, dass es aufgrund eines Fehlers geschlossen wurde.System.exit(0)
zeigt an, dass das Programm normal geschlossen wurde. Sie können 1 auch in eine beliebige Zahl ändern. Wenn Sie Ihre Anwendung über ein Skript ausführen, können Sie feststellen, ob ein Fehler aufgetreten ist.System.exit(int i)
ist zu verwenden, aber ich würde es in eine allgemeinereshutdown()
Methode aufnehmen, in der Sie auch "Bereinigungs" -Schritte einschließen, Socket-Verbindungen schließen, Dateideskriptoren erstellen und dann mit beendenSystem.exit(x)
.quelle
System.exit()
ist normalerweise nicht der beste Weg, aber es hängt von Ihrer Anwendung ab.Die übliche Art, eine Anwendung zu beenden, besteht darin, die
main()
Methode zu beenden . Dies funktioniert nicht, wenn andere Nicht-Deamon-Threads ausgeführt werden, wie dies für Anwendungen mit einer grafischen Benutzeroberfläche (AWT, Swing usw.) üblich ist. Für diese Anwendungen finden Sie entweder eine Möglichkeit, die GUI-Ereignisschleife zu beenden (Sie wissen nicht, ob dies mit AWT oder Swing möglich ist) oder aufzurufenSystem.exit()
.quelle
Die Verwendung
dispose();
ist eine sehr effektive Methode zum Schließen Ihrer Programme.Ich habe festgestellt, dass durch die Verwendung das
System.exit(x)
Zurücksetzen des Interaktionsbereichs und die Annahme, dass Sie einige der dort benötigten Informationen benötigen, alles verschwindet.quelle
Ich stimme Jon zu, lasse deine Anwendung auf etwas reagieren und rufe System.exit () auf.
Sei sicher, dass:
quelle
Die Antwort lautet System.exit (), ist aber keine gute Sache, da dies das Programm abbricht. Eine Reinigung, Zerstörung, die Sie beabsichtigen, wird nicht stattfinden.
quelle
Es gibt zwei einfache Antworten auf die Frage.
Dies ist der "professionelle Weg":
Dies ist ein ungeschickterer Weg:
quelle
System.exit(0); return;
ist auch gut, die Rückgabe verhindert, dass ein anderer Code ausgeführt wird, bevor das System beendet werden kann, andernfalls benötigen Sie ein Flag (..i.e. if (!called_exit) { further code after exit statement }
quelle
halt
: "Diese Methode sollte mit äußerster Vorsicht verwendet werden. Im Gegensatz zurexit
Methode führt diese Methode nicht zum Starten von Shutdown-Hooks und führt keine nicht aufgerufenen Finalizer aus, wenn Finalization-on-Exit aktiviert wurde. Wenn die Shutdown-Sequenz aktiviert ist Diese Methode wurde bereits initiiert und wartet nicht darauf, dass laufende Shutdown-Hooks oder Finalizer ihre Arbeit beenden. " Kurz gesagt, Sie sollten nicht verwenden müssenhalt
, sollten Sie bevorzugenexit
.System.exit()
wird tun was du willst. In den meisten Situationen möchten Sie jedoch wahrscheinlich einen Thread beenden und den Hauptthread am Leben lassen. Auf diese Weise können Sie eine Aufgabe beenden, aber auch die Möglichkeit behalten, eine andere Aufgabe zu starten, ohne die App neu zu starten.quelle
System.exit (ABORT); Beenden Sie den Vorgang sofort.
quelle
Dies sollte auf die richtige Weise geschehen:
quelle