Exception und printStackTrace()
Sebastan
- java
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ß
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
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());
}