Sebastan: Exception und printStackTrace()

Hallo,

ich versche mich in java einzuarbeiten und verstehe nicht, warum
manchmal bei einer try/catch programmierung mal der fehler über
System.out.println() und manchmal mit printStackTrace() ausgegeben
wird.
Wo ist da der unterschied wenn ich es definiere
catch(Throwable t) {
  System.out.println("Fehler: " + t);
}
Würde das gehen und warum nutzt man immer das printStackTrace() ?

Gruß

  1. Guten Morgen!

    Also, der Reihe nach.

    Wo ist da der unterschied wenn ich es definiere
    catch(Throwable t) {
      System.out.println("Fehler: " + t);
    }
    Würde das gehen und warum nutzt man immer das printStackTrace() ?

    Das würde gehen. Wenn du in Java ein Objekt mit einem String zusammenführst (sei dies ein Integer oder ein anderes beliebiges Objekt), dann wird Java die toString()-Methode automatisch einfügen. Was du also in Wirklichkeit da stehen hast ist:
    System.out.println("Fehler: " + t.toString());

    So, dann die andere Sache: toString() gibt in seiner Standardform nur eine kurze Fehlermeldung aus, wie z.B. NullPointerException, also was eigentlich gerade passiert ist. Das hilft dem Entwickler meist nicht viel weiter, zum Debuggen ist es hilfreich zu wissen WO der Fehler aufgetreten ist. printStackTrace verfolgt den Fehler zurück zu seinem Ursprung, da kommt dann Klasse und Zeile raus.
    Wie man der Dokumentation entnehmen kann (link:http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html#printStackTrace()] führt printStackTrace vor dem Trace selber ein toString() aus.

    Gruß

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Danke für den Hinweis, nur diese Zeilen ausgabe erzeuge ich auch
      noch anders in einem anderen kleinen programm hab ich mal:

      catch(SAXParseException error) {
         System.out.orintln("+++ Parse Error +++"
                + "\nZeile: " + error.getLineNumber()
                + "\nDatei: " + error.getSysemId());
         System.out.println("\n" + error.getMessage());
      }