Stack trace (arba traceback) yra išvestis, rodanti jūsų programos metodų krūvą. Paprastai jį matysite savo terminale, kai programoje įvyks klaida.

Kaip rodo pavadinimas, dėklo duomenų struktūra saugo metodus dėklo sekoje. Metodas, kuriuo prasideda programos vykdymas, yra krūvos apačioje, o tas, kuris sukuria krūvos pėdsaką, yra viršuje.

Kamino sekimas gali būti labai naudingas, kai derinate kodą.

Kodėl kamino pėdsakas yra svarbus?

Stack trace yra svarbus derinimo įrankis. Jame pateikiama išsami informacija, pvz., klaidos tipas, metodas, kuriuo ji įvyko, kodo eilutė, kurioje ji įvyko, ir failo kelias.

Patyrusiam programuotojui ši informacija yra aukso kasykla, padedanti suprasti, kas tiksliai nutiko ir kur.

Kaip programuotojas taip pat galite paprašyti savo programos sukurti kamino pėdsaką pagal poreikį. Tai gali būti ypač naudinga kodo priežiūrai ir trikčių šalinimui.

Kaip išvesti dėklo pėdsaką

Priklausomai nuo kompiliatoriaus versijos, greičiausiai gausite skaitomą atsekimą. Skirtingai nuo įprasto atsekimo, skaitomoje sekimo sistemoje pateikiamas patogus tekstas apie klaidą. Tai ypač pasakytina apie naujus kompiliatorius. Todėl geriausias būdas sužinoti apie kamino pėdsakus yra juos pasigaminti patiems.

instagram viewer

Galite sukurti dėklo pėdsaką be klaidų kode. Norėdami tai padaryti, tiesiog naudokite dumpStack metodas java.lang. Siūlas klasė. Tai parodys visus iškviestus metodus, pradedant nuo tų, kurie iškviečia dumpStack. Skambinimo metodas bus viršuje kamino duomenų struktūra.

Štai programos, kuri aiškiai generuoja dėklo sekimą, pavyzdys:

klasėStackTraceDemo{
viešasstatinistuštumapagrindinis(String[] args){
diena ();
}

statinistuštumadieną(){
valandos ();
}

statinistuštumavalandų(){
minutės ();
}

statinistuštumaminučių(){
tarpt a = 24 * 60;
System.out.println (+ " minučių per dieną");
Siūlas.dumpStack();
}
}

Išvestis:

1440 minučių per dieną
java.lang.Išimtis: Stackpėdsaką
adresu java.base/java.lang. Thread.dumpStack (Thread.java: 138)
adresuStackTraceDemo.minutes(StackTraceDemo.java:17)
adresuStackTraceDemo.valandos(StackTraceDemo.java:11)
adresuStackTraceDemo.dieną(StackTraceDemo.java:7)
adresuStackTraceDemo.pagrindinis(StackTraceDemo.java:3)

Šiame išvestyje galite pastebėti, kad sekimas parodo, kaip programa iškvietė kiekvieną Java metodas ir kokiu eilutės numeriu šaltinio kode. Metodas, kuris sugeneravo dėklo pėdsaką, yra tas, kuris parodytas dėklo viršuje. Metodas, kuris jį iškvietė, yra žemiau esančioje eilutėje ir pan.

Už kamino pėdsakų

Pagal numatytuosius nustatymus, kai jūsų „Java“ programa paleidžiama į klaidą, ji sustos ir parodys kamino pėdsaką. Tačiau galite pasirinkti šias klaidas tvarkyti maloniai, o ne rodyti pranešimus, kurie gali suklaidinti galutinius vartotojus.

Galite pagerinti programos klaidų tvarkymą naudodami try...catch() bloką, kad užfiksuotumėte išimtis. Taip pat svarbu atsižvelgti ir suprasti įvairių tipų klaidas, su kuriomis gali susidurti jūsų programos.