En stackspårning (eller traceback) är en utdata som visar metodstacken för din applikation. Du kommer vanligtvis att se en på din terminal när din applikation stöter på ett fel.

Som namnet antyder lagrar en stackdatastruktur metoderna i en stackspårning. Metoden där programkörningen börjar är längst ner i stacken medan den som producerar stackspåren är överst.

En stackspårning kan vara mycket användbar när du felsöker din kod.

Varför är en stackspårning viktig?

En stackspårning är ett viktigt felsökningsverktyg. Det ger dig detaljerad information som typ av fel, metoden där det inträffade, raden i din kod där det inträffade och filsökvägen.

För en erfaren programmerare är denna information en guldgruva för att förstå exakt vad som gick fel och var.

Som programmerare kan du också be ditt program att skapa en stackspårning på begäran. Detta kan vara särskilt användbart för kodunderhåll och felsökning.

Hur man matar ut en stackspårning

Beroende på din kompilatorversion kommer du sannolikt att få en läsbar spårning. En läsbar spårning ger användarvänlig text om felet, till skillnad från den vanliga spårningen. Detta gäller särskilt för nya kompilatorer. Därför är det bästa sättet att lära sig om stack traces att producera en själv.

instagram viewer

Du kan skapa en stackspårning utan att ha några fel i din kod. För att göra det, använd helt enkelt dumpStack metod för java.lang. Tråd klass. Den kommer att visa alla metoder som har anropats, direkt från den som anropar dumpStack. Anropsmetoden kommer att vara den ovanpå stackdatastruktur.

Här är ett exempelprogram som uttryckligen genererar en stackspårning:

klassStackTraceDemo{
offentligstatisktomhethuvud(String[] args){
dag();
}

statisktomhetdag(){
timmar();
}

statisktomhettimmar(){
minuter();
}

statisktomhetminuter(){
int a = 24 * 60;
System.out.println (ett + " minuter på en dag");
Tråd.dumpStack();
}
}

Produktion:

1440 minuter på en dag
java.lang.Undantag: Stackspår
på java.base/java.lang. Thread.dumpStack (Thread.java: 138)
StackTraceDemo.minuter(StackTraceDemo.java:17)
StackTraceDemo.timmar(StackTraceDemo.java:11)
StackTraceDemo.dag(StackTraceDemo.java:7)
StackTraceDemo.main(StackTraceDemo.java:3)

I denna utgång kan du observera att spårningen visar hur programmet anropade var och en Java-metod och vid vilket radnummer i källkoden. Metoden som genererade stackspåret är den som visas överst i stacken. Metoden som kallade den finns på raden under den, och så vidare.

Beyond the Stack Trace

Som standard, när ditt Java-program stöter på ett fel kommer det att stanna och visa en stackspårning. Du kan dock välja att hantera dessa fel på ett elegant sätt istället för att visa meddelanden som kan förvirra slutanvändare.

Du kan förbättra ditt programs felhantering genom att använda ett try...catch()-block för att fånga undantag. Det är också viktigt att överväga – och förstå – de olika typerna av fel som dina program kan stöta på.