Przechwytywanie różnych typów wyjątków w Pythonie
W tym samym kodzie może zaistnieć potrzeba przechwycenia różnych typów wyjątków.
Załóżmy, że musimy przechwycić wyjątek przy dzieleniu przez zero. Przy tego rodzaju błędzie powstaje wyjątek:
ZeroDivisionError: division by zero
Aby go przechwycić, nazwę wyjątku należy
zapisać w bloku except:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
Załóżmy również, że mamy listę:
lst = [1, 2, 3]
Jeśli w bloku try umieścimy kod z innym
potencjalnym błędem, na przykład z wypisaniem
nieistniejącego elementu, to wyjątek,
nieprzechwycony w bloku except, przejdzie
dalej i wyświetli się w konsoli. Z powodu czego
zostanie zatrzymana praca kodu:
lst = [1, 2, 3]
try:
print(lst[4]) # wyświetli IndexError: list index out of range
except ZeroDivisionError:
print('error: do not divide by zero')
Aby rozwiązać taką sytuację, należy podać w każdym bloku nazwę odpowiedniego typu wyjątku. Dodajmy do naszego kodu wyjątek dotyczący brakującego elementu:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem is not exist')
Dany jest następujący kod:
txt = '2'
res1 = txt + 3
res2 = txt1
Napisz kod, aby przechwycić przedstawione
w zmiennych res1 i res2
wyjątki.