Breakpointy a błędy w kodzie
Zakończenie programu może wystąpić też nienaturalnie gdy będziemy mieli błąd w kodzie 😀 Wtedy, jeśli breakpoint znajduje się za błędem niestety program nie dotrze do tego breakpointa. Wykona się do momentu błędu i zostanie przerwany.
Przetestujmy to:
Umieść kolejny breakpoint na przedostatniej linii kodu:
print("Returning list")
Podstępnie, przed linią z ostatnim breakpoint, zepsuj inną linię. Na przykład taką:
cats.append(cat3)
Zepsucie kodu zrobimy w ten sposób, że wymusimy dodanie nieistniejącego kota. O tak:
cats.append(cat323)
Spróbuj przejść do nowo dodanego breakpointa na końcu programu korzystając oczywiście z trybu Debug i akcji Resume Program. Debugger zatrzyma się w zupełnie innym miejscu🤕.
Błąd w kodzie i debugger
Pierwsze co powinieneś zauważyć, to że zostaliśmy przeniesieni do miejsca w którym wystąpił błąd. To niezwykle użyteczne. Przy okazji znak błyskawicy informuje nas, że natrafiliśmy na coś co zatrzymuje kod ale nie jest to nasz brakepoint. Dodatkowo otrzymujemy ciekawe informacje w oknie Variables.
W oknie Variables jesteśmy teraz w stanie zobaczyć co się udało poprawnie zrealizować (utworzone zmienne) i w której linii leży błąd:
Zaznaczyliśmy, na powyższym screenie, że od razu możemy przeczytać wartość błędu z listy __exception__
. Po jej rozwinięciu (kliknij szarą strzałkę po lewej stronie nazwy __exception__
) widzimy najbardziej interesującą nas część:
NameError("name 'cat323' is not defined")
Z którym się w pełni zgadzamy gdyż takiego kota nie zdefiniowaliśmy w programie 😁 W zakładce Console możesz zobaczyć pełny komunikat błędu.
Kolejne użycie Resume Program (F9) spowoduje wyjście z trybu debug i zakończenie wykonywania programu.
Do naszego nowego breakpointa już nie dotarliśmy ale znowu uzyskaliśmy masę cennej wiedzy💪 Poprawiamy program tak aby działał poprawnie i przechodzimy do kolejnego wyzwania.