Jason. Cała informatyka w jednym miejscu!

Zerkniemy na temat związany z obsługą wyjątków w języku Java. To nie będzie kolejna pogadanka o wyjątkach, a tylko o pewnej metodzie wykorzystywanej nałogowo przez wiele osób w programach, filmach czy poradnikach. Widzicie to tyle razy. Za każdym razem gdy ktoś na szybko pisze blok "try-catch", zwykle osadza to samo wyrażenie po nazwie instancji klasy "Exception". Bez przerwy w przeważającej większości przypadków ludzie zalecą Wam to samo. W książkach wielkimi wołami również jest o tym wspomnienie, a jednak można nie zdawać sobie sprawy co ta metoda robi takiego ekscytującego, że wszyscy to stosują. Chodzi mi o "printStackTrace" w języku Java. Co to takiego? Zapraszam do środka.

WYJAŚNIENIE METODY "PRINTSTACKTRACE" W JĘZYKU JAVA. MOŻE ZAJRZEĆ DO ANGIELSKIEGO?

Z reguły zalecam wszystkim moim znajomym pytającym mnie o zdanie na temat czegokolwiek z programowania, że jak nie potrafią niczego powiedzieć o jakimś słowie kluczowym czy metodzie, niech zaczną od tłumaczenia nazwy na język polski. Prześledźmy to sobie po kolei.

"print" oznacza "drukowanie", aczkolwiek nie chodzi o takie drukowanie jak to rozumiemy przez drukarkę. Chodzi o wypisanie tekstu na strumień wyjściowy. Dalej, słowo "stack". To jest stos, czyli struktura danych na której się "kładzie" wszystkie dane i metody zgodnie z działaniem "LIFO" (ang. "Last In, First Out"). W celu dostania się do jakiejkolwiek danej, należy najpierw "zdjąć" wszystko to, co stoi wyżej, tak samo jakby się położyło stos talerzy. Spróbujcie to dobrze zrozumieć, bo to stanowi "clue" całego działania metody! "trace" jest ostatnim słowem, to jest dosłownie "śledzenie". W tym kontekście akurat, mamy to rozumieć jako "zdanie relacji" punkt po punkcie co się działo ze stosem. Na to składa się w całości "printStackTrace" w języku Java.

W efekcie końcowym mamy tłumaczenie: "wydrukuj śledzenie stosu". Jakkolwiek by to nie brzmiało komicznie, chodzi o wypisanie wszystkich metod umieszczonych na stosie, od momentu uruchomienia programu do momentu zgłoszenia wyjątku. Wypisywanie swoistego "raportu" o stosie jest jedną z często uprawianych technik debugowania w celu ustalenia kolejności wykonywania pewnych instrukcji przez aplikację. Dzięki temu, istnieje szansa samodzielnego zdiagnozowania przyczyny wystąpienia zgłoszenia wyjątku i ewentualnej eliminacji problemu.

TO NIE SĄ WSZYSTKIE MOŻLIWOŚCI

Sama metoda jest popularna i często widziana w kodach źródłowych, aczkolwiek na tym świat się nie kończy. Na przykład tego już możecie nie wiedzieć, że pochodzi to od klasy "Throwable" i ma związek z klasą "StackTraceElement". Oraz że metoda jest przeciążona i można przekazać aktualny stan stosu do obiektu typu "PrintWriter" lub "PrintStream" i wypisać dane diagnostyczne do pliku tekstowego (w przypadku tego pierwszego). Takich manewrów często się nie praktykuje i stąd ograniczenie wiedzy tylko do najbardziej podstawowej wersji metody.

Stos wywołań metod zwrócony przez metodę "printStackTrace" w języku Java

Przykładowy stos wywołań metod po wywołaniu metody "printStackTrace" w języku Java.


Koniec tematu! Od tej pory będziecie już wiedzieć, że "printStackTrace" to jest wykaz wszystkich metod po jakich "przeszła" aplikacja i jaki bieg wydarzeń spowodował zgłoszenie wyjątku.

PODOBNE ARTYKUŁY