Ślad stosu (lub traceback) to dane wyjściowe, które pokazują stos metod aplikacji. Zazwyczaj zobaczysz go na swoim terminalu, gdy aplikacja napotka błąd.

Jak sama nazwa wskazuje, struktura danych stosu przechowuje metody w śladzie stosu. Metoda, od której rozpoczyna się wykonywanie programu, znajduje się na dole stosu, podczas gdy ta, która generuje ślad stosu, znajduje się na górze.

Ślad stosu może być bardzo przydatny podczas debugowania kodu.

Dlaczego śledzenie stosu jest ważne?

Ślad stosu jest ważnym narzędziem do debugowania. Zawiera szczegółowe informacje, takie jak typ błędu, metoda, w której wystąpił, wiersz w kodzie, w którym wystąpił i ścieżka pliku.

Dla doświadczonego programisty ta informacja jest kopalnią złota, dzięki której można zrozumieć, co dokładnie poszło nie tak i gdzie.

Jako programista możesz również poprosić swój program o utworzenie śladu stosu na żądanie. Może to być szczególnie przydatne przy konserwacji kodu i rozwiązywaniu problemów.

Jak wyprowadzić ślad stosu

W zależności od wersji kompilatora, najprawdopodobniej otrzymasz czytelny traceback. Czytelny traceback zapewnia przyjazny dla użytkownika tekst o błędzie, w przeciwieństwie do normalnego śledzenia. Dotyczy to zwłaszcza nowych kompilatorów. Dlatego najlepszym sposobem na poznanie śladów stosu jest samodzielne ich wyprodukowanie.

instagram viewer

Możesz utworzyć ślad stosu bez żadnych błędów w kodzie. Aby to zrobić, po prostu użyj dumpStack metoda java.lang. Wątek klasa. Pokaże wszystkie wywołane metody, od tej, która wywołuje dumpStack. Metoda wywołująca będzie tą, która znajduje się na górze struktura danych stosu.

Oto przykładowy program, który jawnie generuje ślad stosu:

klasaStackTraceDemo{
publicznystatycznypróżniaGłówny(String[] argumenty){
dzień();
}

statycznypróżniadzień(){
godziny();
}

statycznypróżniagodziny(){
minuty();
}

statycznypróżniaminuty(){
int a = 24 * 60;
System.out.println (+ " minut w dzień");
Wątek.dumpStack();
}
}

Wyjście:

1440 minut dziennie
Jawa.język.Wyjątek: Stosnamierzać
pod adresem java.base/java.lang. Thread.dumpStack (Thread.java: 138)
wStackTraceDemo.minuty(StackTraceDemo.Jawa:17)
wStackTraceDemo.godziny(StackTraceDemo.Jawa:11)
wStackTraceDemo.dzień(StackTraceDemo.Jawa:7)
wStackTraceDemo.Główny(StackTraceDemo.Jawa:3)

Na tym wyjściu możesz zaobserwować, że traceback pokazuje, jak program wywołał each Metoda Javy i pod jakim numerem wiersza w jego kodzie źródłowym. Metoda, która wygenerowała ślad stosu, jest pokazana na szczycie stosu. Metoda, która go wywołała, znajduje się w wierszu poniżej i tak dalej.

Poza śladem stosu

Domyślnie, gdy program Java napotka błąd, zatrzyma się i wyświetli ślad stosu. Możesz jednak z łatwością obsługiwać te błędy, zamiast wyświetlać komunikaty, które mogą dezorientować użytkowników końcowych.

Możesz poprawić obsługę błędów swojego programu, używając bloku try...catch() do przechwytywania wyjątków. Ważne jest również, aby wziąć pod uwagę i zrozumieć różne typy błędów, które mogą napotkać Twoje programy.