Zachycování různých typů výjimek v Pythonu
V jednom a tom samém kódu může být potřeba zachytit různé typy výjimek.
Řekněme, že potřebujeme zachytit výjimku při dělení nulou. Při tomto typu chyby vzniká výjimka:
ZeroDivisionError: division by zero
Pro její zachycení je třeba název výjimky
zapsat v bloku except:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
Dále mějme seznam:
lst = [1, 2, 3]
Pokud v bloku try zadáme kód s jinou
potenciální chybou, například s výpisem
neexistujícího prvku, pak výjimka,
nezachycená v bloku except, projde
dál a vypíše se do konzole. Kvůli čemuž
se zastaví běh 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')
Pro řešení této situace je třeba uvést v každém bloku název odpovídajícího typu výjimky. Přidejme do našeho kódu výjimku pro chybějící prvek:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem is not exist')
Je dán následující kód:
txt = '2'
res1 = txt + 3
res2 = txt1
Napište kód pro zachycení výjimek
představených v proměnných res1 a res2.