Stack trace (vai traceback) ir izvade, kas parāda jūsu lietojumprogrammas metožu kopu. Parasti terminālī tā tiks rādīta, kad lietojumprogrammā rodas kļūda.

Kā norāda nosaukums, steka datu struktūra saglabā metodes steka trasē. Metode, ar kuru sākas programmas izpilde, atrodas steka apakšā, bet tā, kas veido steka izsekošanu, atrodas augšpusē.

Steka izsekošana var būt ļoti noderīga, atkļūdojot kodu.

Kāpēc steka izsekošana ir svarīga?

Steka trasēšana ir svarīgs atkļūdošanas rīks. Tas sniedz detalizētu informāciju, piemēram, kļūdas veidu, metodi, kurā tā radās, koda rindiņu, kur tā radās, un faila ceļu.

Pieredzējušam programmētājam šī informācija ir zelta raktuves, lai saprastu, kas tieši un kur nogāja greizi.

Kā programmētājs varat arī lūgt savai programmai izveidot steka izsekošanu pēc pieprasījuma. Tas var būt īpaši noderīgi koda uzturēšanai un problēmu novēršanai.

Kā izvadīt steka izsekošanu

Atkarībā no jūsu kompilatora versijas, visticamāk, iegūsit lasāmu izsekošanu. Atšķirībā no parastās izsekošanas, lasāmā izsekošana nodrošina lietotājam draudzīgu tekstu par kļūdu. Īpaši tas attiecas uz jaunajiem kompilatoriem. Tāpēc labākais veids, kā uzzināt par steku pēdām, ir izveidot to pašam.

Jūs varat izveidot steka izsekošanu bez kļūdām kodā. Lai to izdarītu, vienkārši izmantojiet dumpStack metode java.lang. Pavediens klasē. Tas parādīs visas izsauktās metodes, sākot no tās, kas izsauc dumpStack. Zvanīšanas metode būs augšpusē esošā steka datu struktūra.

Šeit ir programmas piemērs, kas tieši ģenerē steka izsekošanu:

klasēStackTraceDemo{
publiskistatisksnederīgsgalvenais(String[] args){
diena ();
}

statisksnederīgsdiena(){
stundas ();
}

statisksnederīgsstundas(){
minūtes ();
}

statisksnederīgsminūtes(){
starpt a = 24 * 60;
System.out.println (+ " minūtes dienā");
Pavediens.dumpStack();
}
}

Izvade:

1440 minūtes dienā
java.lang.Izņēmums: Kaudzeizsekot
vietnē java.base/java.lang. Thread.dumpStack (Thread.java: 138)
plkstStackTraceDemo.minūtes(StackTraceDemo.java:17)
plkstStackTraceDemo.stundas(StackTraceDemo.java:11)
plkstStackTraceDemo.diena(StackTraceDemo.java:7)
plkstStackTraceDemo.galvenais(StackTraceDemo.java:3)

Šajā izvadē var novērot, ka izsekošana parāda, kā programma katru izsauca Java metode un pie kāda rindas numura tā avota kodā. Metode, kas ģenerēja steka izsekošanu, ir parādīta steka augšdaļā. Metode, kas to izsauca, atrodas rindiņā zem tās utt.

Beyond the Stack Trace

Pēc noklusējuma, kad jūsu Java programmā rodas kļūda, tā tiks apturēta un tiks parādīta steka izsekošana. Tomēr varat izvēlēties graciozi apstrādāt šīs kļūdas, nevis rādīt ziņojumus, kas var mulsināt galalietotājus.

Varat uzlabot programmas kļūdu apstrādi, izmantojot bloku try...catch(), lai fiksētu izņēmumus. Ir arī svarīgi ņemt vērā un izprast dažāda veida kļūdas, ar kurām var saskarties jūsu programmas.