Announcement

Collapse
No announcement yet.

Frage zum Werfen von Exceptions

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zum Werfen von Exceptions

    Hallo!

    Also ich verstehe, dass man Exceptions selber werfen muss, wenn man eigene Methoden schreibt.

    Aber ich habe Folgendes in der main-Methode eines Programms gesehen

    Code:
    try {
      if (param.length < 2) {
         throw new IllegalArgumentException("Falsche Anzahl Parameter");
      } 
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    }
    // mehr Code
    Wo ist hier der Unterschied zu:

    Code:
    if (param.length < 2) {
       System.out.println("Falsche Anzahl Parameter");
    }
    
    // mehr Code
    Beide Male wird eine Fehlermeldung ausgegeben und das Programm läuft danach weiter.

    Okay, oben kann ich über die Exception mehr Informationen über den Fehler erhalten, aber ist das der einzige Grund?

    Und ist zudem IllegalArgumentException nicht eine RuntimeException, die man gar nicht abfangen muss, sondern durch Überprüfungen wie (...length != 1) usw. vermeidet?

  • #2
    Das eine ist eine Exception, das andere schreibt ins Stdout
    Wenn du keine Prüfung machst, und irgendeine Methode schmeisst die Exception, dann kommt sie auch bei einem Fehler

    Eine Exception sollte man selbst schmeissen, wenn man trotz Fehlerbehandlung feststellt, dass die Anwendung so nicht weiterarbeiten kann. Ansonsten sollte die Fehlerbehandung (damit auch das fangen von Exceptions) wenn möglich dazu führen, dass die Anwendung weiterlaufen kann
    Zuletzt editiert von Christian Marquardt; 11.09.2014, 17:17.
    Christian

    Comment


    • #3
      In diesem Fall ist es wohl nur ein kleiner Unterschied. Die 1. Variante gibt dir den gesamten StackTrace der Exception aus (inkl. wo im Code die Exception aufgetreten ist), schreibt die Infos aber auf stderr. Im zweiten Fall bekommst du nur eine kleine Ausgabe der Fehlermeldung auf stdout. Das erstere wurde wohl eher zu Debugzwecken entwickelt (StackTraces erleichtern die Fehlersuche) und sollte wohl so in der Praxis nicht übernommen werden (würde ich dir zumindest davon abraten)

      Comment


      • #4
        okay, danke für die Antworten!

        Comment

        Working...
        X