Pinon jäljitys (tai traceback) on tulos, joka näyttää sovelluksesi menetelmäpinon. Näet yleensä sellaisen päätteessäsi, kun sovelluksesi kohtaa virheen.

Kuten nimestä voi päätellä, pinotietorakenne tallentaa menetelmät pinojäljitykseen. Menetelmä, jossa ohjelman suoritus alkaa, on pinon alaosassa, kun taas pinon jäljen tuottava on yläosassa.

Pinojäljitys voi olla erittäin hyödyllinen, kun suoritat koodin virheenkorjausta.

Miksi pinojäljitys on tärkeä?

Pinojäljitys on tärkeä virheenkorjaustyökalu. Se antaa sinulle yksityiskohtaisia ​​tietoja, kuten virheen tyypin, menetelmän, jolla se tapahtui, koodisi rivin, jossa se tapahtui, ja tiedostopolun.

Kokeneelle ohjelmoijalle tämä tieto on kultakaivos, jonka hän ymmärtää, mikä meni pieleen ja missä.

Ohjelmoijana voit myös pyytää ohjelmaasi luomaan pinojäljen pyynnöstä. Tämä voi olla erityisen hyödyllistä koodin ylläpidossa ja vianmäärityksessä.

Pinojäljityksen tulostaminen

Kääntäjäversiostasi riippuen saat todennäköisesti luettavan jäljityksen. Luettava jäljitys tarjoaa käyttäjäystävällistä tekstiä virheestä, toisin kuin normaali jäljitys. Tämä pätee erityisesti uusiin kääntäjiin. Siksi paras tapa oppia pinojäljistä on tuottaa sellainen itse.

Voit tuottaa pinojäljityksen ilman, että koodissasi on virheitä. Voit tehdä sen yksinkertaisesti käyttämällä dumpStack menetelmä java.lang. Lanka luokkaa. Se näyttää kaikki menetelmät, jotka on kutsuttu, suoraan siitä, joka kutsuu dumpStack. Soittotapa on yläpuolella oleva pinotietorakenne.

Tässä on esimerkkiohjelma, joka luo nimenomaisesti pinojäljityksen:

luokkaaStackTraceDemo{
julkinenstaattinenmitätönpää(merkkijono[] args){
päivä();
}

staattinenmitätönpäivä(){
tuntia();
}

staattinenmitätöntuntia(){
pöytäkirja();
}

staattinenmitätönpöytäkirja(){
int a = 24 * 60;
System.out.println (+ " minuuttia päivässä");
Lanka.dumpStack();
}
}

Lähtö:

1440 minuuttia päivässä
java.lang.Poikkeus: Pinojäljittää
osoitteessa java.base/java.lang. Thread.dumpStack (Thread.java: 138)
kloStackTraceDemo.pöytäkirja(StackTraceDemo.java:17)
kloStackTraceDemo.tuntia(StackTraceDemo.java:11)
kloStackTraceDemo.päivä(StackTraceDemo.java:7)
kloStackTraceDemo.main(StackTraceDemo.java:3)

Tässä tulosteessa voit havaita, että jäljitys näyttää, kuinka ohjelma kutsui kutakin Java menetelmä ja millä rivinumerolla sen lähdekoodissa. Pinon jäljen luonut menetelmä on pinon yläosassa näkyvä menetelmä. Menetelmä, joka kutsui sen, on sen alla olevalla rivillä ja niin edelleen.

Beyond the Stack Trace

Oletuksena, kun Java-ohjelmasi kohtaa virheen, se pysähtyy ja näyttää pinon jäljen. Voit kuitenkin käsitellä näitä virheitä sulavasti sen sijaan, että näytät viestejä, jotka voivat hämmentää loppukäyttäjiä.

Voit parantaa ohjelmasi virheenkäsittelyä käyttämällä try...catch()-lohkoa poikkeuksien kaappaamiseen. On myös tärkeää ottaa huomioon – ja ymmärtää – erityyppiset virheet, joita ohjelmasi voivat kohdata.