Un stivă de urmărire (sau traceback) este o ieșire care arată stiva de metode a aplicației dvs. De obicei, veți vedea unul pe terminal atunci când aplicația dvs. întâlnește o eroare.
După cum sugerează și numele, o structură de date stivă stochează metodele într-o urmărire a stivei. Metoda în care începe execuția programului este în partea de jos a stivei, în timp ce cea care produce urmărirea stivei este în partea de sus.
O urmărire a stivei poate fi foarte utilă atunci când depanați codul.
De ce este importantă o urmărire a stivei?
O urmărire a stivei este un instrument important de depanare. Vă oferă informații detaliate, cum ar fi tipul de eroare, metoda în care a apărut, linia din codul dvs. unde a apărut și calea fișierului.
Pentru un programator experimentat, aceste informații sunt o mină de aur pentru a înțelege ce anume a mers prost și unde.
În calitate de programator, puteți cere programului dvs. să creeze o urmărire a stivei la cerere. Acest lucru poate fi util în special pentru întreținerea codului și depanarea.
Cum se scoate o urmărire a stivei
În funcție de versiunea compilatorului, cel mai probabil veți obține o urmărire care poate fi citită. Un traceback care poate fi citit oferă text ușor de utilizat despre eroare, spre deosebire de traceback normal. Acest lucru este valabil mai ales pentru compilatoarele noi. Prin urmare, cel mai bun mod de a învăța despre urmele stivei este să produci unul singur.
Puteți produce o urmărire a stivei fără a avea erori în codul dvs. Pentru a face acest lucru, pur și simplu utilizați dumpStack metoda de java.lang. Fir clasă. Va afișa toate metodele care au fost apelate, chiar de la cea care apelează dumpStack. Metoda de apelare va fi cea de deasupra structura de date a stivei.
Iată un exemplu de program care generează în mod explicit o urmărire a stivei:
clasăStackTraceDemo{
publicstaticgolprincipal(Șir[] argumente){
zi();
}staticgolzi(){
ore();
}staticgolore(){
minute();
}
staticgolminute(){
int a = 24 * 60;
System.out.println (a + " minute într-o zi");
Fir.dumpStack();
}
}
Ieșire:
1440 de minute într-o zi
java.lang.Excepție: Grămadăurmă
la java.base/java.lang. Thread.dumpStack (Thread.java: 138)
laStackTraceDemo.minute(StackTraceDemo.java:17)
laStackTraceDemo.ore(StackTraceDemo.java:11)
laStackTraceDemo.zi(StackTraceDemo.java:7)
laStackTraceDemo.principal(StackTraceDemo.java:3)
În această ieșire, puteți observa că traceback-ul arată cum programul le-a numit pe fiecare Metoda Java și la ce număr de linie din codul sursă. Metoda care a generat urmărirea stivei este cea afișată în partea de sus a stivei. Metoda care l-a numit pe aia este pe linia de sub ea și așa mai departe.
Dincolo de Urma Stivei
În mod implicit, atunci când programul dvs. Java întâlnește o eroare, acesta se va opri și va afișa o urmă de stivă. Cu toate acestea, puteți alege să gestionați aceste erori cu grație în loc să afișați mesaje care pot deruta utilizatorii finali.
Puteți îmbunătăți gestionarea erorilor programului dvs. folosind un bloc try...catch() pentru a captura excepțiile. De asemenea, este important să luați în considerare și să înțelegeți diferitele tipuri de erori pe care programele dvs. le pot întâlni.