2013-02-13 13 views
8

Wenn ich prüfen möchte, ob einige Voraussetzungen gegeben sind, um ein Java-Programm laufen zu lassen, was ist das Beste?
Sie: System.exit(1);Wie kann ich ein Java-Programm anhalten, wenn festgestellt wird, dass es nicht ausgeführt werden soll?

Oder ein RuntimeException in main werfen den Haupt-Thread zu beenden? (Keine anderen Threads laufen noch)

+2

Ich würde persönlich lieber beenden, anstatt eine Ausnahme zu werfen. –

+0

Ich denke, es hängt davon ab, wer der Benutzer Ihres Programms ist und wie Sie ihn/sie warnen möchten. Wenn Ihr Programm nur ein Dienst ist, würde ich mit der Option System.exit() gehen, da ich in meinen Protokollen keine unnötigen Ausnahmen haben möchte. Wenn Ihr Programm über eine grafische Benutzeroberfläche verfügt, müssen Sie den Benutzer entsprechend warnen. Daher sollte jede Art von Ausnahme abgefangen werden und ein Dialogfeld sollte dem Endbenutzer erklären, warum das Programm beendet wurde. – nikkatsa

Antwort

9

Idealer Sie Ihre Fäden anmutig beenden. System.exit(1) funktioniert auch, aber es ist besser, wenn Ihre Threads signalisiert werden, dass sie aufhören müssen, was sie tun und beenden, indem sie beenden, was sie tun (d. H. Ihre Methode bis zum Ende ausführen). Es hängt natürlich von Ihrem Design ab.

Werfen Sie eine RuntimeException scheint zu unsagbar und könnte dazu führen, dass Sie Verhalten, das Sie eigentlich nicht wollen.

1

Nicht mehr Informationen haben als das, was Sie auf dem Laufenden ich so etwas tun würde:

public static void main(String[] args) { 
    boolean precondition = ... // determine your precondition here 
    if (precondition) { 
     // run program 
    } else { 
     System.out.println("Preconditions not satisfied."); 
    } 
} 
+0

Welche anderen Informationen würden benötigt? Ich möchte prüfen, ob einige Bedingungen gelten und wenn nicht, den Hauptthread beenden. – Jim

+0

@Jim: Dann können Sie es tun, wie in meiner Antwort geschrieben. – jlordo

+0

Ja, wenn die Bedingung nicht erfüllt ist, geht das Programm zur letzten Zeile (Nachricht drucken) und beendet – kiedysktos

1

Sie sind besser dran, aufrufen, da Ausnahmen verwendet werden, um Fehler im Programmierfluss zu fangen und sie entsprechend zu behandeln.

Aus Sicht der Benutzer die Fragen nach der Anwendung drucken zu System.err aufweist, und dann anmutig Schließen ist viel intuitiver als eine Stack-Trace oder andere Code Notationen wie EXCEPTION zu sehen, dass sie nicht zu verstehen, zu erwarten.

2

Wenn Sie eine Stack-Trace wollen, gehen Sie mit der RuntimeException, wenn nicht System.exit (1) ist sauberer.

1

Entweder ist gut, aber ich würde lieber die System.exit() als die RuntimeException könnte als irreführend angesehen werden.

0

Niemals den Ausgang erzwingen. Programmieren Sie Ihre Laufzeitmethode so, dass Ihre Anwendung keine Methoden mehr hat und sich selbst schließt. Ich schlage vor, vor jeder strukturellen Anwendung ein Diagramm zu zeichnen.

Verwandte Themen