Ein Stack-Trace (oder Traceback) ist eine Ausgabe, die den Methoden-Stack Ihrer Anwendung zeigt. Normalerweise sehen Sie einen auf Ihrem Terminal, wenn Ihre Anwendung auf einen Fehler stößt.
Wie der Name schon sagt, speichert eine Stack-Datenstruktur die Methoden in einem Stack-Trace. Die Methode, bei der die Programmausführung beginnt, befindet sich am unteren Ende des Stacks, während sich diejenige, die den Stack-Trace erzeugt, ganz oben befindet.
Ein Stack-Trace kann sehr nützlich sein, wenn Sie Ihren Code debuggen.
Warum ist ein Stack-Trace wichtig?
Ein Stack-Trace ist ein wichtiges Debugging-Tool. Es gibt Ihnen detaillierte Informationen wie die Art des Fehlers, die Methode, in der er aufgetreten ist, die Zeile in Ihrem Code, in der er aufgetreten ist, und den Dateipfad.
Für einen erfahrenen Programmierer sind diese Informationen eine Goldgrube, um zu verstehen, was genau schief gelaufen ist und wo.
Als Programmierer können Sie Ihr Programm auch bitten, bei Bedarf einen Stack-Trace zu erstellen. Dies kann besonders nützlich für die Codewartung und Fehlerbehebung sein.
So geben Sie einen Stack-Trace aus
Abhängig von Ihrer Compiler-Version erhalten Sie höchstwahrscheinlich ein lesbares Traceback. Ein lesbares Traceback bietet im Gegensatz zum normalen Traceback benutzerfreundlichen Text über den Fehler. Dies gilt insbesondere für neue Compiler. Daher ist der beste Weg, etwas über Stack-Traces zu lernen, selbst einen zu erstellen.
Sie können einen Stack-Trace erstellen, ohne Fehler in Ihrem Code zu haben. Verwenden Sie dazu einfach die dumpStack Methode der java.lang. Faden Klasse. Es zeigt alle Methoden, die aufgerufen wurden, direkt von derjenigen, die dumpStack aufruft. Die aufrufende Methode ist diejenige über der Stack-Datenstruktur.
Hier ist ein Beispielprogramm, das explizit einen Stack-Trace generiert:
KlasseStackTraceDemo{
ÖffentlichkeitstatischLeerehauptsächlich(String[] Argumente){
Tag();
}statischLeereTag(){
Std();
}statischLeereStd.(){
Protokoll();
}
statischLeereProtokoll(){
int ein = 24 * 60;
System.out.println (ein + " Minuten an einem Tag");
Faden.dumpStack();
}
}
Ausgabe:
1440 Minuten an einem Tag
Java.lang.Ausnahme: Stapelverfolgen
unter java.base/java.lang. Thread.dumpStack (Thread.java: 138)
beiStackTraceDemo.Protokoll(StackTraceDemo.Java:17)
beiStackTraceDemo.Std(StackTraceDemo.Java:11)
beiStackTraceDemo.Tag(StackTraceDemo.Java:7)
beiStackTraceDemo.hauptsächlich(StackTraceDemo.Java:3)
In dieser Ausgabe können Sie beobachten, dass die Rückverfolgung zeigt, wie das Programm die einzelnen aufgerufen hat Java-Methode und an welcher Zeilennummer in seinem Quellcode. Die Methode, die den Stack-Trace generiert hat, ist diejenige, die oben im Stack angezeigt wird. Die Methode, die diese aufgerufen hat, steht in der Zeile darunter und so weiter.
Jenseits des Stack-Trace
Wenn Ihr Java-Programm auf einen Fehler stößt, wird es standardmäßig angehalten und ein Stack-Trace angezeigt. Sie können diese Fehler jedoch elegant handhaben, anstatt Meldungen anzuzeigen, die Endbenutzer verwirren könnten.
Sie können die Fehlerbehandlung Ihres Programms verbessern, indem Sie einen try...catch()-Block verwenden, um Ausnahmen zu erfassen. Es ist auch wichtig, die verschiedenen Arten von Fehlern zu berücksichtigen und zu verstehen, auf die Ihre Programme stoßen können.