Zachytávanie rôznych typov výnimiek v Pythone
V rovnakom kóde môže byť potrebné zachytiť rôzne typy výnimiek.
Povedzme, že potrebujeme zachytiť výnimku pri delení nulou. Pri tomto type chyby vypadne výnimka:
ZeroDivisionError: division by zero
Ak ju chceme zachytiť, názov výnimky by mal byť
zadaný v bloku except:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
Tiež povedzme, že máme zoznam:
lst = [1, 2, 3]
Ak v bloku try zadáme kód s inou
potenciálnou chybou, napríklad s výpisom
neexistujúceho prvku, tak výnimka,
ktorá nie je zachytená v bloku except, prejde
ďalej a vypíše sa do konzoly. Kvôli čomu
sa zastaví činnosť kódu:
lst = [1, 2, 3]
try:
print(lst[4]) # vypíše IndexError: list index out of range
except ZeroDivisionError:
print('error: do not divide by zero')
Na vyriešenie tejto situácie je potrebné uviesť v každom bloku názov príslušného typu výnimky. Pridajme do nášho kódu výnimku pre chýbajúci prvok:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem is not exist')
Daný je nasledujúci kód:
txt = '2'
res1 = txt + 3
res2 = txt1
Napíšte kód na zachytenie prezentovaných
v premenných res1 a res2
výnimiek.