Pro/Con System.exit(1)

BaseBallBatBoy

Erfahrenes Mitglied
Hi!

Ich und ein Kollege arbeiten momentan an einem Code. Das Programm ist übrigens ein Commandline tool. Nun sind wir am Punkt angelangt, wo wir uns fragen, ob wir folgendes verwenden wollen/sollten oder eben nicht:
Code:
try {
         .....
    } catch(Exception e) {
      e.printStackTrace();
      System.exit(1);
    }

Mein Kollege möchte das so lösen, ich hingegen bin dafür eine Exception zu werfen (kann auch eine eigens Erstellte sein) und diese dann nach aussen tragen und da entsprechend handeln. Anstelle stacktrace würde ich eher in einen log schreiben.

Was meint ihr?

Gruss
BBBB
 
Hi,
also einen Logger zu nehmen, ist nie falsch. Ob man in einem catch-Block das Programm mit System.exit(1) verlässt oder nicht, muss der Entwickler anhand der Schwere des Fehlers entscheiden.

Gruß

Fabio
 
Was wären denn deiner Meinung nach Fehler die einen System.exit rechtfertigen würden? Sagen wir mal eine Query geht schief, oder ein Server wird nicht gefunden, oder ein Input File enthält schlechte Syntax.
 
Es kommt nicht nur auf die Exception an. Wenn das Programm auch ohne die Datei, Variable, etc. - die im Try-Block erstellt/abgefragt werden sollte - auskommt, dann muss man es logischer weiße nicht beenden. Wenn du allerdings z.B. eine Datei einließt und deren Inhalt nicht dem entspricht, was du erwartest, dann kannst du das Programm verlassen, da das Programm eh nicht weiter arbeiten kann.
 
Es kommt generell drauf an was für eine Art von Programm es ist. Generell ist es sinnnvoll die Abhandlung nach außen hin an einer Stelle zu machen. Der normale Benutzer wird mit einem Stacktrace auch nichts anfangen können.
Aber bei einem simplen Kommandzozeilen-Tool, welches eine Aufgabe hat und nicht interaktiv ist kann man das auch mit System.exit machen.

Ansonsten schließe ich mich Fabio an :)
 
Zurück