A veremkövetés (vagy visszakövetés) egy olyan kimenet, amely az alkalmazás metódusvermét mutatja. Általában egy ilyen jelenik meg a terminálon, ha az alkalmazás hibát észlel.

Ahogy a neve is sugallja, egy verem adatstruktúra a metódusokat veremnyomban tárolja. A programvégrehajtás a verem alján kezdődik, míg a verem nyomkövetését létrehozó a tetején található.

A veremkövetés nagyon hasznos lehet a kód hibakeresése során.

Miért fontos a Stack Trace?

A veremkövetés fontos hibakereső eszköz. Részletes információkat nyújt, például a hiba típusát, a fellépés módját, a kód sorát, ahol a hiba történt, és a fájl elérési útját.

Egy tapasztalt programozó számára ez az információ aranybánya annak megértéséhez, hogy pontosan mi és hol hibázott.

Programozóként kérheti a programját, hogy igény szerint hozzon létre egy verem nyomkövetést. Ez különösen hasznos lehet a kód karbantartása és hibaelhárítása során.

Hogyan adhatunk ki egy veremnyomot

A fordítóprogram verziójától függően nagy valószínűséggel olvasható nyomkövetést kap. Az olvasható visszakövetés felhasználóbarát szöveget biztosít a hibáról, ellentétben a normál visszakövetéssel. Ez különösen igaz az új fordítókra. Ezért a veremnyomok megismerésének legjobb módja, ha saját maga készít egyet.

instagram viewer

Veremnyomkövetést készíthet anélkül, hogy a kódban hiba lenne. Ehhez egyszerűen használja a dumpStack módszere a java.lang. cérna osztály. Megjeleníti az összes meghívott metódust, attól kezdve, amelyik a dumpStack-et hívja. A hívási módszer a tetején lévő lesz verem adatstruktúra.

Íme egy példaprogram, amely kifejezetten létrehoz egy veremkövetést:

osztályStackTraceDemo{
nyilvánosstatikusüresfő-(String[] args){
nap();
}

statikusüresnap(){
órák();
}

statikusüresórák(){
percek();
}

statikusürespercek(){
int a = 24 * 60;
System.out.println (a + " perc egy nap alatt");
cérna.dumpStack();
}
}

Kimenet:

1440 perc egy nap
Jáva.lang.Kivétel: Kazalnyom
a java.base/java.lang oldalon. Thread.dumpStack (Thread.java: 138)
nál nélStackTraceDemo.percek(StackTraceDemo.Jáva:17)
nál nélStackTraceDemo.órák(StackTraceDemo.Jáva:11)
nál nélStackTraceDemo.nap(StackTraceDemo.Jáva:7)
nál nélStackTraceDemo.fő(StackTraceDemo.Jáva:3)

Ebben a kimenetben megfigyelhető, hogy a visszakövetés megmutatja, hogy a program hogyan hívta meg mindegyiket Java módszer és a forráskódjában melyik sorszámon. A veremkövetést létrehozó módszer a verem tetején látható. A metódus, amely ezt hívta, az alatta lévő sorban található, és így tovább.

Beyond the Stack Trace

Alapértelmezés szerint, ha a Java program hibába fut, leáll, és veremkövetést jelenít meg. Dönthet azonban úgy, hogy ezeket a hibákat kecsesen kezeli ahelyett, hogy olyan üzeneteket jelenítene meg, amelyek megzavarhatják a végfelhasználókat.

A program hibakezelését javíthatja a try...catch() blokk használatával a kivételek rögzítésére. Szintén fontos figyelembe venni – és megérteni – a különféle típusú hibákat, amelyekkel a programok találkozhatnak.