Trasování zásobníku (neboli traceback) je výstup, který ukazuje zásobník metod vaší aplikace. Obvykle jej uvidíte na svém terminálu, když vaše aplikace narazí na chybu.

Jak název napovídá, datová struktura zásobníku ukládá metody do trasování zásobníku. Metoda, kde začíná provádění programu, je ve spodní části zásobníku, zatímco metoda, která vytváří trasování zásobníku, je nahoře.

Trasování zásobníku může být velmi užitečné při ladění kódu.

Proč je trasování zásobníku důležité?

Trasování zásobníku je důležitý nástroj pro ladění. Poskytuje podrobné informace, jako je typ chyby, metoda, ve které k ní došlo, řádek v kódu, kde k ní došlo, a cesta k souboru.

Pro zkušeného programátora jsou tyto informace zlatým dolem pro pochopení toho, co přesně se pokazilo a kde.

Jako programátor můžete také požádat svůj program, aby na požádání vytvořil trasování zásobníku. To může být užitečné zejména pro údržbu kódu a odstraňování problémů.

Jak vytvořit výstup trasování zásobníku

V závislosti na verzi kompilátoru s největší pravděpodobností získáte čitelný traceback. Čitelný traceback poskytuje uživatelsky přívětivý text o chybě, na rozdíl od normálního tracebacku. To platí zejména pro nové kompilátory. Proto je nejlepším způsobem, jak se o trasování zásobníku dozvědět, vytvořit si je sami.

instagram viewer

Můžete vytvořit trasování zásobníku bez jakýchkoli chyb v kódu. Chcete-li tak učinit, jednoduše použijte dumpStack metoda java.lang. Vlákno třída. Zobrazí všechny metody, které byly volány, přímo od té, která volá dumpStack. Metoda volání bude ta navrchu zásobníková datová struktura.

Zde je příklad programu, který explicitně generuje trasování zásobníku:

třídaStackTraceDemo{
veřejnoststatickýprázdnotahlavní(Řetězec[] argumentů){
den();
}

statickýprázdnotaden(){
hodiny();
}

statickýprázdnotahodin(){
minut();
}

statickýprázdnotaminut(){
int a = 24 * 60;
System.out.println (a + " minut za den");
Vlákno.dumpStack();
}
}

Výstup:

1440 minut za den
Jáva.lang.Výjimka: Zásobníkstopa
na java.base/java.lang. Thread.dumpStack (Thread.java: 138)
vStackTraceDemo.minut(StackTraceDemo.Jáva:17)
vStackTraceDemo.hodin(StackTraceDemo.Jáva:11)
vStackTraceDemo.den(StackTraceDemo.Jáva:7)
vStackTraceDemo.hlavní(StackTraceDemo.Jáva:3)

V tomto výstupu můžete pozorovat, že traceback ukazuje, jak program každý volal Java metoda a na jakém čísle řádku ve zdrojovém kódu. Metoda, která vygenerovala trasování zásobníku, je ta, která je zobrazena v horní části zásobníku. Metoda, která tuto metodu volala, je na řádku pod ní a tak dále.

Beyond the Stack Trace

Ve výchozím nastavení, když váš Java program narazí na chybu, zastaví se a zobrazí trasování zásobníku. Můžete se však rozhodnout, že s těmito chybami budete zacházet elegantně, namísto zobrazování zpráv, které mohou koncové uživatele zmást.

Zpracování chyb svého programu můžete zlepšit použitím bloku try...catch() k zachycení výjimek. Je také důležité zvážit – a porozumět – různým typům chyb, s nimiž se vaše programy mohou setkat.