Stacktrace
Dieser Beitrag ist eine Begriffserklärung zum Thema Stacktrace – mit typischen Prüfungsfragen, Praxisbeispiel und Tags für die schnelle Wiederholung.
Was ist ein Stacktrace?
Ein Stacktrace zeigt die Aufrufkette (Call Stack) eines Programms zu dem Zeitpunkt, an dem eine Exception oder ein Fehler auftritt. Jede Zeile enthält typischerweise:
- Funktions-/Methodenname
- Datei/Modul
- Zeilennummer
- ggf. „Caused by …“ (verschachtelte Ursachen)
Wozu braucht man Stacktraces?
- Schnelle Fehlersuche: Wo ist der Fehler aufgetreten?
- Ursachenanalyse: Von welchem Pfad kam der Code dahin?
- Dokumentation: Bug-Reports lassen sich nachvollziehbar belegen
Beispiel-Stacktrace (Java)
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Calculator.divide(Calculator.java:10)
at App.main(App.java:5)
Interpretation:
Die Division durch null passiert in Calculator.divide (Zeile 10). Der Aufruf kam aus App.main (Zeile 5).
Sicherheitsaspekt: Warum nicht im Frontend anzeigen?
Stacktraces können interne Details verraten:
- Klassen-/Methodennamen
- Bibliotheken/Framework-Versionen
- Dateipfade und Architekturhinweise
Best Practice: Intern detailliert loggen, extern nur eine generische Fehlermeldung anzeigen.
Vorteile und Nachteile
Vorteile
- Sehr präzise Fehlerlokalisierung
- Unverzichtbar beim Debugging
Nachteile
- Für Einsteiger schwer lesbar
- In Produktion ein Risiko, wenn unkontrolliert sichtbar
Typische Prüfungsfragen (mit Kurzantwort)
- Was ist ein Stacktrace? Darstellung der Aufrufkette zum Zeitpunkt einer Exception.
- Welche Infos enthält er typischerweise? Exception-Typ, Nachricht, Methode/Funktion, Datei, Zeilennummer.
- Was bedeutet „Caused by“? Die eigentliche Ursache einer verschachtelten Exception.
- Warum sollte man Stacktraces nicht an Nutzer ausgeben? Risiko von Informationslecks über interne Struktur.
Fazit
Wenn du Stacktraces lesen kannst, findest du Fehler deutlich schneller – und kannst in Prüfung und Praxis sauber begründen, wo und warum etwas schiefgelaufen ist.