Een stacktracering (of traceback) is een uitvoer die de methodestack van uw toepassing laat zien. U ziet er meestal een op uw terminal wanneer uw toepassing een fout tegenkomt.
Zoals de naam al doet vermoeden, slaat een stapelgegevensstructuur de methoden op in een stapeltracering. De methode waarbij de uitvoering van het programma begint, bevindt zich onderaan de stapel, terwijl degene die de stapeltracering produceert bovenaan staat.
Een stacktracering kan erg handig zijn bij het debuggen van uw code.
Waarom is een Stack Trace belangrijk?
Een stacktracering is een belangrijk debuggingtool. Het geeft u gedetailleerde informatie, zoals het type fout, de methode waarin het is opgetreden, de regel in uw code waar het is opgetreden en het bestandspad.
Voor een ervaren programmeur is deze informatie een goudmijn om te begrijpen wat er precies is misgegaan en waar.
Als programmeur kunt u uw programma ook vragen om op aanvraag een stacktracering te maken. Dit kan met name handig zijn voor code-onderhoud en probleemoplossing.
Een stapeltracering uitvoeren
Afhankelijk van uw compilerversie krijgt u hoogstwaarschijnlijk een leesbare traceback. Een leesbare traceback geeft gebruiksvriendelijke tekst over de fout, in tegenstelling tot de normale traceback. Dit geldt met name voor nieuwe compilers. Daarom is de beste manier om meer te weten te komen over stapelsporen, door er zelf een te maken.
U kunt een stacktracering maken zonder fouten in uw code. Gebruik hiervoor de dumpStack methode van de java.lang. Draad klas. Het toont alle methoden die zijn aangeroepen, direct vanaf de methode die dumpStack aanroept. De aanroepmethode is die bovenop de stapel gegevensstructuur.
Hier is een voorbeeldprogramma dat expliciet een stacktracering genereert:
klasStackTraceDemo{
openbaarstatischleegtehoofd(String[] argumenten){
dag();
}statischleegtedag(){
uur();
}statischleegteuur(){
minuten();
}
statischleegteminuten(){
int een = 24 * 60;
Systeem.uit.println (een + " minuten in een dag");
Draad.dumpStack();
}
}
Uitgang:
1440 minuten in een dag
Java.lang.Uitzondering: Stapelspoor
op java.base/java.lang. Thread.dumpStack (Thread.java: 138)
BijStackTraceDemo.minuten(StackTraceDemo.Java:17)
BijStackTraceDemo.uren(StackTraceDemo.Java:11)
BijStackTraceDemo.dag(StackTraceDemo.Java:7)
BijStackTraceDemo.hoofd(StackTraceDemo.Java:3)
In deze uitvoer kunt u zien dat de traceback laat zien hoe het programma elk Java-methode: en op welk regelnummer in de broncode. De methode die de stacktracering heeft gegenereerd, is degene die bovenaan de stapel wordt weergegeven. De methode die die oproept, staat op de regel eronder, enzovoort.
Voorbij het stapelspoor
Wanneer uw Java-programma een fout tegenkomt, zal het standaard stoppen en een stacktracering weergeven. U kunt er echter voor kiezen om deze fouten netjes af te handelen in plaats van berichten weer te geven die eindgebruikers kunnen verwarren.
U kunt de foutafhandeling van uw programma verbeteren door een blok try...catch() te gebruiken om uitzonderingen vast te leggen. Het is ook belangrijk om rekening te houden met - en te begrijpen - de verschillende soorten fouten die uw programma's kunnen tegenkomen.