|
Rozdział 7: Błędy i wyjątki 1: Błędy składni
- 2: Wyjątki - 3: Obsługa wyjątków
- 4: Zgłaszanie wyjątków 5: Wyjątki definiowane przez użytkownika
- 6: Jak posprzątać po bałaganiarzu?
Lekcja 2: Wyjątki
Nawet gdy wyrażenie jest składniowo poprawne, może spowodować błąd podczas próby wykonania
go. Błędy takie nazywane są wyjątkami i niekoniecznie muszą zakończyć
program. Większość wyjątków
nie jest obsługiwana przez programy i objawiają się w komunikatach o błędzie, jak poniżej:
>>> 10 * (1/0)
Traceback (innermost last):
File "<stdin>", line 1, in ?
ZeroDivisionError: integer division or modulo
>>> 4 + kwiatek*3
Traceback (innermost last):
File "<stdin>", line 1, in ?
NameError: kwiatek
>>> '2' + 2
Traceback (innermost last):
File "<stdin>", line 1, in ?
TypeError: illegal argument type for built-in operation
(ZeroDivisionError : dzielenie całkowite lub operacja modulo)
(TypeError : nieprawidłowy typ argumentu operacji wbudowanej)
Pierwsza część komunikatu pokazuje kontekst, w jakim wyjątek się zdarzył, w postaci śladu ze
stosu wywołań. Ogólnie mówiąc, kontekst zawiera ślady wywołań w postaci wierszy kodu, aczkolwiek
nie pokaże wierszy podchodzących ze standardowego wejścia.
Ostatnia linia komunikatu o błędzie pokazuje co się stało. Wyjątki są różnego typu, i ten typ
wyświetlany jest jako część komunikatu. W powyższym przykładzie tymi typami są ZeroDivisionError,
NameError i TypeError. Napis wyświetlany jako typ wyjątku jest nazwą wbudowanego w interpreter
wyjątku, który się właśnie pojawił. Zachodzi to dla wszystkich wyjątków wbudowanych, lecz
niekoniecznie jest to prawdą dla wyjątków zdefiniowanych przez użytkownika (jakkolwiek, jest to
użyteczna konwencja). Nazwy standardowych wyjątków są wbudowanymi identyfikatorami, a nie
zastrzeżonymi słowami kluczowymi.
Reszta wiersza komunikatu w szczegółach opisuje to, co się stało. Interpretacja i znaczenie tego
opisu zależy od typu wyjątku.
Opis biblioteki Pythona wyszczególnia wszystkie wbudowane wyjątki i przedstawia ich znaczenie.
|
|