Stack trace (ili traceback) je izlaz koji pokazuje stog metoda vaše aplikacije. Obično ćete ga vidjeti na svom terminalu kada vaša aplikacija naiđe na pogrešku.

Kao što naziv sugerira, struktura podataka steka pohranjuje metode u tragu stoga. Metoda kojom počinje izvršavanje programa nalazi se na dnu stoga, dok je metoda koja proizvodi trag stoga na vrhu.

Praćenje stoga može biti vrlo korisno kada otklanjate pogreške u svom kodu.

Zašto je Stack Trace važan?

Stack trace važan je alat za otklanjanje pogrešaka. Daje vam detaljne informacije kao što su vrsta pogreške, način na koji se dogodila, redak u vašem kodu gdje se dogodila i put datoteke.

Iskusnom programeru ove su informacije zlatni rudnik za razumijevanje što je točno pošlo po zlu i gdje.

Kao programer, također možete zatražiti od svog programa da na zahtjev stvori praćenje stoga. Ovo može biti osobito korisno za održavanje koda i rješavanje problema.

Kako ispisati Stack Trace

Ovisno o vašoj verziji kompajlera, najvjerojatnije ćete dobiti čitljivo praćenje. Čitljivo povratno praćenje pruža tekst o pogrešci prilagođen korisniku, za razliku od uobičajenog praćenja. Ovo posebno vrijedi za nove prevoditelje. Stoga je najbolji način da naučite o tragovima stogova da ih sami proizvedete.

instagram viewer

Možete proizvesti praćenje hrpe bez grešaka u svom kodu. Da biste to učinili, jednostavno upotrijebite dumpStack metoda java.lang. Nit razreda. Prikazat će sve metode koje su pozvane, počevši od one koja poziva dumpStack. Metoda poziva bit će ona na vrhu stack struktura podataka.

Evo primjera programa koji eksplicitno generira praćenje hrpe:

razredaStackTraceDemo{
javnoststatičkiponištitiglavni(String[] argumenti){
dan();
}

statičkiponištitidan(){
sati();
}

statičkiponištitisati(){
minute();
}

statičkiponištitiminuta(){
int a = 24 * 60;
System.out.println (a + " minuta u danu");
Nit.dumpStack();
}
}

Izlaz:

1440 minuta u danu
Java.jezik.Iznimka: Stogtrag
na java.base/java.lang. Thread.dumpStack (Thread.java: 138)
naStackTraceDemo.minute(StackTraceDemo.Java:17)
naStackTraceDemo.sati(StackTraceDemo.Java:11)
naStackTraceDemo.dan(StackTraceDemo.Java:7)
naStackTraceDemo.glavni(StackTraceDemo.Java:3)

U ovom izlazu možete primijetiti da praćenje pokazuje kako je program pozvao svaki Java metoda i na kojem broju retka u izvornom kodu. Metoda koja je generirala praćenje snopa prikazana je na vrhu snopa. Metoda koja je pozvala tu je na liniji ispod nje, i tako dalje.

Izvan Stack Tracea

Prema zadanim postavkama, kada vaš Java program naiđe na pogrešku, zaustavit će se i prikazati praćenje hrpe. Međutim, možete izabrati elegantno rukovanje ovim pogreškama umjesto prikazivanja poruka koje mogu zbuniti krajnje korisnike.

Možete poboljšati rukovanje pogreškama vašeg programa korištenjem bloka try...catch() za hvatanje iznimaka. Također je važno razmotriti — i razumjeti — razne vrste pogrešaka na koje vaši programi mogu naići.