En stack trace (eller traceback) er et output, der viser metodestakken for din applikation. Du vil typisk se en på din terminal, når din applikation støder på en fejl.
Som navnet antyder, gemmer en stakdatastruktur metoderne i et stakspor. Metoden, hvor programafviklingen begynder, er i bunden af stakken, mens den, der producerer staksporet, er øverst.
En staksporing kan være meget nyttig, når du fejlretter din kode.
Hvorfor er et stakspor vigtigt?
En staksporing er et vigtigt fejlfindingsværktøj. Det giver dig detaljerede oplysninger såsom typen af fejl, metoden, hvor den opstod, linjen i din kode, hvor den opstod, og filstien.
For en erfaren programmør er denne information en guldgrube til at forstå, hvad der præcist gik galt, og hvor.
Som programmør kan du også bede dit program om at oprette en stack-sporing efter behov. Dette kan være særligt nyttigt til kodevedligeholdelse og fejlfinding.
Sådan udskrives et stakspor
Afhængigt af din compilerversion vil du højst sandsynligt få et læsbart spor. En læsbar traceback giver brugervenlig tekst om fejlen i modsætning til den normale traceback. Dette gælder især for nye compilere. Derfor er den bedste måde at lære om stakspor at fremstille en selv.
Du kan lave et stakspor uden at have nogen fejl i din kode. For at gøre det skal du blot bruge dumpStack metoden til java.lang. Tråd klasse. Det vil vise alle metoder, der er blevet kaldt, lige fra den, der kalder dumpStack. Opkaldsmetoden vil være den oven på stak datastruktur.
Her er et eksempelprogram, der eksplicit genererer et stakspor:
klasseStackTraceDemo{
offentligstatiskugyldigvigtigste(String[] args){
dag();
}statiskugyldigdag(){
timer();
}statiskugyldigtimer(){
minutter();
}
statiskugyldigminutter(){
int a = 24 * 60;
System.out.println (et + " minutter på en dag");
Tråd.dumpStack();
}
}
Produktion:
1440 minutter på en dag
java.lang.Undtagelse: Stakspore
på java.base/java.lang. Thread.dumpStack (Thread.java: 138)
påStackTraceDemo.minutter(StackTraceDemo.java:17)
påStackTraceDemo.timer(StackTraceDemo.java:11)
påStackTraceDemo.dag(StackTraceDemo.java:7)
påStackTraceDemo.main(StackTraceDemo.java:3)
I dette output kan du se, at sporingen viser, hvordan programmet kaldte hver Java metode og på hvilket linjenummer i dens kildekode. Metoden, der genererede staksporet, er den, der vises øverst i stakken. Metoden, der kaldte den, er på linjen under den, og så videre.
Beyond the Stack Trace
Som standard, når dit Java-program løber ind i en fejl, vil det stoppe og vise et stakspor. Du kan dog vælge at håndtere disse fejl med ynde i stedet for at vise meddelelser, der kan forvirre slutbrugere.
Du kan forbedre dit programs fejlhåndtering ved at bruge en try...catch() blok til at fange undtagelser. Det er også vigtigt at overveje - og forstå - de forskellige typer fejl, dine programmer kan støde på.