Was ist die Verwendung der Methode printStackTrace() in Java?
Lesezeit: 5 Minuten
Venkat
Ich durchlaufe ein Socket-Programm. Drin, printStackTrace heißt auf der IOException Objekt im catch-Block.
Was macht printStackTrace() eigentlich tun?
catch(IOException ioe)
{
ioe.printStackTrace();
}
Zweck ist mir nicht bekannt. Was wird es verwendet?
Eine der leistungsstärksten Funktionen moderner IDEs ist die Möglichkeit, die Dokumentation (Javadoc genannt) für eine bestimmte Java-Methode nachzuschlagen. In Eclipse ist es Shift-F2, wenn der Cursor auf dem Namen der printStackTrace-Methode platziert wird.
Sie können auch den Code von printStackTrace() lesen, um genau zu sehen, was es tut und wie es es tut.
– Peter Lawrey
18. November 2010 um 10:59 Uhr
Ich sehe oft dieses Muster in Catch-Blöcken: e.printStackTrace(); System.exit(1); Hier möchte ich die gleiche Frage stellen wie das OP, aber in einem anderen Sinne: Was genau ist der Zweck davon? Wird die JRE nicht automatisch den Stacktrace drucken und beenden, wenn die Ausnahme ausgelöst wird? Dh, hier ist nicht wirklich viel “Ausnahmebehandlung” los, oder??
– Owen
16. März 2017 um 22:15 Uhr
Es ist im Allgemeinen auch eine sehr schlechte Idee, da es die Ausnahme unterdrückt – leider wird es von Eclipse und anderen IDEs oft automatisch als Körper für den Catch-Block vorgeschlagen, also wird es verwendet weit öfter als es sein sollte.
Beachten Sie, dass Sie dies in “seriösem Produktionscode” aus verschiedenen Gründen normalerweise nicht tun möchten (z System.out weniger nützlich und nicht threadsicher). In diesen Fällen verwenden Sie normalerweise ein Protokoll-Framework, das die gleiche (oder sehr ähnliche) Ausgabe mit einem Befehl wie z log.error("Error during frobnication", e);.
Und dank geprüfter Ausnahmen ist es wahrscheinlich der Nr. 1-Inhalt von catch Blöcke 🙂
– Joey
3. April 2010 um 7:57 Uhr
@ Joey Oder throw new RuntimeException(e)
– Bart van Heukelom
19. Juli 2011 um 8:16 Uhr
Es wird jedoch als schlechte Praxis angesehen, da es nicht threadsicher ist. Verwenden Sie die Logger-Anweisung und fügen Sie sie dort ein.
– Karidrgn
16. März 2018 um 20:52 Uhr
Jens Bodel
Ich war auch irgendwie neugierig darauf, also habe ich nur einen kleinen Beispielcode zusammengestellt, in dem Sie sehen können, was es tut:
java.io.IOException
at package.Test.main(Test.java:74)
Dies ist normal, mit dem ersten rufen Sie toString() des Fehlers auf, und im zweiten fragen Sie nach, den gesamten StackTrace des Fehlers zu drucken. Das sind 2 verschiedene Dinge.
– Jon
17. Mai 2016 um 8:08 Uhr
System.err.println(e); wird angemessener sein.
– Wurzelreisender
11. September 2017 um 5:18 Uhr
Yogesh Pathak
Es hilft, die Ausnahme zu verfolgen. Zum Beispiel schreiben Sie einige Methoden in Ihr Programm und eine Ihrer Methoden verursacht einen Fehler. Dann hilft dir printstack dabei herauszufinden, welche Methode den Fehler verursacht. Stack hilft wie folgt:
Zuerst wird Ihre Hauptmethode aufgerufen und in den Stack eingefügt, dann wird die zweite Methode aufgerufen und in der LIFO-Reihenfolge in den Stack eingefügt. Wenn irgendwo innerhalb einer Methode ein Fehler auftritt, hilft dieser Stack, diese Methode zu identifizieren.
Ashish Gope
printStackTrace() hilft dem Programmierer zu verstehen, wo das eigentliche Problem aufgetreten ist. printStacktrace() ist eine Methode der Klasse Throwable von java.lang Paket. Es druckt mehrere Zeilen in der Ausgabekonsole. Die erste Zeile besteht aus mehreren Strings. Es enthält den Namen der Throwable-Unterklasse und die Paketinformationen. Ab der zweiten Zeile beschreibt es die Fehlerposition/Zeilennummer beginnend mit at.
Die letzte Zeile beschreibt immer das vom Fehler/Ausnahme betroffene Ziel. Die vorletzte Zeile informiert uns über die nächste Zeile im Stapel, wohin die Steuerung geht, nachdem sie die Übertragung von der in der letzten Zeile beschriebenen Zeilennummer erhalten hat. Die Fehler/Ausnahmen stellen die Ausgabe in Form eines Stapels dar, die in den Stapel eingespeist wurden fillInStackTrace() Methode von Throwable -Klasse, die selbst die Übertragungsdetails der Programmsteuerung in den Ausführungsstapel einfügt. Die Zeilen beginnen mit at, sind nichts anderes als die Werte des Ausführungsstapels. Auf diese Weise kann der Programmierer verstehen, wo im Code das eigentliche Problem liegt.
Zusammen mit printStackTrace() Methode, es ist eine gute Idee zu verwenden e.getmessage().
DerArchon
printStackTrace() gibt die Stellen aus, an denen die Ausnahme im Quellcode aufgetreten ist, sodass der Autor, der das Programm geschrieben hat, sehen kann, was schief gelaufen ist. Aber da es Probleme im Quellcode zeigt, können die Benutzer, die möglicherweise keine Programmiererfahrung haben, möglicherweise nicht verstehen, was schief gelaufen ist. Wenn das Programm dem Benutzer also erlaubt, Fehlermeldungen an die Autoren zu senden, die Benutzer können möglicherweise keine guten Daten darüber geben, was schief gelaufen ist.
Das sollten Sie bedenken Logger.getLogger() -Methode bietet es eine bessere Ausnahmebehandlung (Protokollierung) und außerdem printStackTrace() ohne Argumente gilt als obsolet und sollte NUR für Debugging-Zwecke verwendet werden, nicht für die Benutzeranzeige.
JNYRanger
Das printStackTrace() hilft dem Programmierer zu verstehen, wo das eigentliche Problem aufgetreten ist. Das printStackTrace() Die Methode ist ein Mitglied der Klasse Throwable in dem java.lang Paket.
Shakthi Arul
printStackTrace ist eine Methode der Throwable Klasse. Diese Methode zeigt eine Fehlermeldung in der Konsole an; wo wir die Ausnahme im Quellcode bekommen. Diese Methoden können mit catch-Block verwendet werden und beschreiben:
Name der Ausnahme.
Beschreibung der Ausnahme.
Ort der Ausnahme im Quellcode.
Die drei Methoden, die die Ausnahme auf der Konsole beschreiben (wobei printStackTrace eine davon ist), sind:
printStackTrace()
toString()
getMessage()
Beispiel:
public class BabluGope {
public static void main(String[] args) {
try {
System.out.println(10/0);
} catch (ArithmeticException e) {
e.printStackTrace();
// System.err.println(e.toString());
//System.err.println(e.getMessage());
}
}
}
12986600cookie-checkWas ist die Verwendung der Methode printStackTrace() in Java?yes
Eine der leistungsstärksten Funktionen moderner IDEs ist die Möglichkeit, die Dokumentation (Javadoc genannt) für eine bestimmte Java-Methode nachzuschlagen. In Eclipse ist es Shift-F2, wenn der Cursor auf dem Namen der printStackTrace-Methode platziert wird.
– Thorbjørn Ravn Andersen
1. April 2010 um 13:36 Uhr
Klingt, als wären Sie neu in Java. Hier gibt es etwas zu lesen: today.java.net/article/2006/04/04/…
– TJR
1. April 2010 um 17:48 Uhr
Sie können auch den Code von printStackTrace() lesen, um genau zu sehen, was es tut und wie es es tut.
– Peter Lawrey
18. November 2010 um 10:59 Uhr
Ich sehe oft dieses Muster in Catch-Blöcken:
e.printStackTrace(); System.exit(1);
Hier möchte ich die gleiche Frage stellen wie das OP, aber in einem anderen Sinne: Was genau ist der Zweck davon? Wird die JRE nicht automatisch den Stacktrace drucken und beenden, wenn die Ausnahme ausgelöst wird? Dh, hier ist nicht wirklich viel “Ausnahmebehandlung” los, oder??– Owen
16. März 2017 um 22:15 Uhr
Es ist im Allgemeinen auch eine sehr schlechte Idee, da es die Ausnahme unterdrückt – leider wird es von Eclipse und anderen IDEs oft automatisch als Körper für den Catch-Block vorgeschlagen, also wird es verwendet weit öfter als es sein sollte.
– dimo414
13. April 2017 um 1:17 Uhr