Sledovanie zásobníka (alebo spätné sledovanie) je výstup, ktorý zobrazuje zásobník metód vašej aplikácie. Zvyčajne ho uvidíte na svojom termináli, keď vaša aplikácia zaznamená chybu.
Ako už názov napovedá, dátová štruktúra zásobníka ukladá metódy do stopy zásobníka. Metóda, pri ktorej začína vykonávanie programu, je v spodnej časti zásobníka, zatiaľ čo metóda, ktorá vytvára stopu zásobníka, je v hornej časti.
Sledovanie zásobníka môže byť veľmi užitočné pri ladení kódu.
Prečo je sledovanie zásobníka dôležité?
Sledovanie zásobníka je dôležitý nástroj na ladenie. Poskytuje vám podrobné informácie, ako je typ chyby, spôsob, akým sa vyskytla, riadok v kóde, kde sa vyskytla, a cesta k súboru.
Pre skúseného programátora sú tieto informácie zlatou baňou na pochopenie toho, čo presne sa pokazilo a kde.
Ako programátor môžete tiež požiadať svoj program o vytvorenie sledovania zásobníka na požiadanie. To môže byť užitočné najmä pri údržbe kódu a riešení problémov.
Ako vytlačiť stopu zásobníka
V závislosti od vašej verzie kompilátora s najväčšou pravdepodobnosťou získate čitateľné sledovanie. Na rozdiel od bežného spätného sledovania poskytuje čitateľný text o chybe užívateľsky prívetivý text. To platí najmä pre nové kompilátory. Preto je najlepším spôsobom, ako sa dozvedieť o stopách zásobníka, vytvoriť si ich sami.
Môžete vytvoriť stopu zásobníka bez akýchkoľvek chýb v kóde. Ak to chcete urobiť, jednoducho použite dumpStack metóda java.lang. Niť trieda. Ukáže všetky metódy, ktoré boli volané, hneď od tej, ktorá volá dumpStack. Metóda volania bude tá navrchu zásobníková dátová štruktúra.
Tu je príklad programu, ktorý explicitne generuje stopu zásobníka:
triedaStackTraceDemo{
verejnostistatickéneplatnéhlavné(Reťazec[] argumentov){
deň ();
}statickéneplatnédeň(){
hodiny();
}statickéneplatnéhodiny(){
minúty();
}
statickéneplatnéminút(){
int a = 24 * 60;
System.out.println (a + " minút za deň");
Niť.dumpStack();
}
}
Výkon:
1440 minút denne
java.lang.Výnimka: Stohstopa
na java.base/java.lang. Thread.dumpStack (Thread.java: 138)
priStackTraceDemo.minút(StackTraceDemo.java:17)
priStackTraceDemo.hodín(StackTraceDemo.java:11)
priStackTraceDemo.deň(StackTraceDemo.java:7)
priStackTraceDemo.hlavné(StackTraceDemo.java:3)
V tomto výstupe môžete pozorovať, že spätné sledovanie ukazuje, ako program volal každého Java metóda a na akom čísle riadku v jeho zdrojovom kóde. Metóda, ktorá vygenerovala stopu zásobníka, je tá, ktorá je zobrazená v hornej časti zásobníka. Metóda, ktorá ho volala, je na riadku pod ním atď.
Beyond the Stack Trace
Keď sa váš program Java dostane do chyby, štandardne sa zastaví a zobrazí stopu zásobníka. Namiesto zobrazovania správ, ktoré môžu koncových používateľov zmiasť, sa však môžete rozhodnúť spracovať tieto chyby elegantne.
Spracovanie chýb programu môžete zlepšiť použitím bloku try...catch() na zachytávanie výnimiek. Je tiež dôležité zvážiť – a pochopiť – rôzne typy chýb, s ktorými sa môžu vaše programy stretnúť.