Sled sklada (ali traceback) je izhod, ki prikazuje sklad metod vaše aplikacije. Običajno ga boste videli na terminalu, ko vaša aplikacija naleti na napako.
Kot že ime pove, podatkovna struktura sklada shranjuje metode v sled sklada. Metoda, pri kateri se začne izvajanje programa, je na dnu sklada, medtem ko je tista, ki ustvari sled sklada, na vrhu.
Sledenje sklada je lahko zelo koristno, ko odpravljate napake v kodi.
Zakaj je sled sklada pomembna?
Sled sklada je pomembno orodje za odpravljanje napak. Ponuja podrobne informacije, kot so vrsta napake, način, na katerega se je pojavila, vrstica v vaši kodi, kjer se je zgodila, in pot do datoteke.
Za izkušenega programerja so te informacije zlata jama za razumevanje, kaj točno je šlo narobe in kje.
Kot programer lahko od svojega programa tudi zahtevate, da na zahtevo ustvari sled sklada. To je lahko še posebej uporabno za vzdrževanje kode in odpravljanje težav.
Kako izpisati sled sklada
Odvisno od vaše različice prevajalnika boste najverjetneje dobili berljivo sledenje. Berljivo povratno sledenje zagotavlja uporabniku prijazno besedilo o napaki, za razliko od običajnega povratnega sledenja. To še posebej velja za nove prevajalnike. Zato je najboljši način, da se naučite o sledovih skladov, da jih ustvarite sami.
Izdelate lahko sled sklada, ne da bi imeli v kodi napake. Če želite to narediti, preprosto uporabite dumpStack metoda java.lang. nit razred. Prikazal bo vse klicane metode, od tiste, ki kliče dumpStack. Klicna metoda bo tista na vrhu podatkovna struktura sklada.
Tukaj je primer programa, ki eksplicitno ustvari sled sklada:
razredStackTraceDemo{
javnostistatičnaprazninaglavni(Argumenti niza[]){
dan();
}statičnaprazninadan(){
ure();
}statičnaprazninaure(){
minute();
}
statičnaprazninaminut(){
int a = 24 * 60;
System.out.println (a + " minut na dan");
nit.dumpStack();
}
}
Izhod:
1440 minut na dan
java.lang.Izjema: Stacksled
na java.base/java.lang. Thread.dumpStack (Thread.java: 138)
priStackTraceDemo.minut(StackTraceDemo.java:17)
priStackTraceDemo.ure(StackTraceDemo.java:11)
priStackTraceDemo.dan(StackTraceDemo.java:7)
priStackTraceDemo.glavni(StackTraceDemo.java:3)
V tem izhodu lahko opazite, da sledenje nazaj prikazuje, kako je program poklical vsakega Java metoda in na kateri številki vrstice v izvorni kodi. Metoda, ki je ustvarila sled sklada, je tista, ki je prikazana na vrhu sklada. Metoda, ki je poklicala tisto, je v vrstici pod njo in tako naprej.
Onkraj sledi sklada
Ko vaš program Java naleti na napako, se privzeto ustavi in prikaže sled sklada. Vendar se lahko odločite, da boste te napake elegantno obravnavali, namesto da bi prikazovali sporočila, ki lahko zmedejo končne uporabnike.
Obravnavo napak v programu lahko izboljšate z uporabo bloka try...catch() za zajemanje izjem. Prav tako je pomembno upoštevati – in razumeti – različne vrste napak, na katere lahko naletijo vaši programi.