Zachytávání výjimek v Pythonu

V Pythonu ve srovnání s jinými programovacími jazyky existuje velmi mnoho situací, které vyvolávají výjimky.

Pojďme se na ně podívat podrobněji. Předpokládejme, že máme následující seznam:

pythonlst = [1, 2, 3]

Přistoupíme k neexistujícímu prvku seznamu:

pythonprint(lts[4])

Po provedení kodu se vypíše chyba (výjimka):

errorIndexError: list index out of range

Pokud potřebujeme pokračovat v práci bez výpisu výjimky, měli bychom ji zachytit pomocí konstrukce try-except. Ta má následující syntaxi:

pythontry:
  # kód, který může vyvolat výjimku
except:
  # ošetření chyby

V bloku try by měl být umístěn kód, který může obsahovat výjimku. Pokud při provádění tohoto kódu nastane výjimečná situace, provedení kódu se nezastaví, ale přejde do kódu bloku except. V tomto bloku by měl být napsán výpis zprávy, co nejpřesněji popisující podstatu vzniklé chyby.

Pokud při provádění bloku try nenastane žádná výjimečná situace, užitečný kód se jednoduše provede a kód z bloku except - ne.

Pojďme zachytit naši výjimku při přístupu k neexistujícímu prvku seznamu. K tomu umístíme do bloku try kód s potenciální chybou. A v bloku except zadáme výpis do konzole zprávy 'error: elem is not exist':

pythonlst = [1, 2, 3]
try:
  print(lst[4])
except:
  print('error: elem is not exist')

Po provedení kódu se vypíše:

python'error: elem is not exist'

Po prostudování konstrukce try-except by se měl změnit styl vašeho psaného kódu. Nyní je třeba všechny místa, kde může nastat výjimečná situace, obalit try, a v bloku except popsat reakci na tuto výjimku.

Задание 1

Zeptejte se uživatele na dvě čísla. Vydělte jedno druhým. Zachyťte výjimečnou situaci dělení nulou.

Задание 2

Zeptejte se uživatele na číslo. Najděte druhou odmocninu tohoto čísla. Zachyťte výjimečnou situaci odmocňování záporného čísla.

Задание 3

Je dán seznam. Zeptejte se uživatele na celé číslo. Získejte prvek seznamu, jehož číslo zadal uživatel. Zachyťte výjimečnou situaci, která nastane, pokud uživatel zadal číslo mimo rozsah seznamu.

Задание 4

Je dán následující kód:

pythonnum = '5'
res = num + 2

print(res)

Co je s tímto kódem špatně? Opravte jeho nedostatky.

Задание 5

Je dán následující kód:

pythonlst = [1, 2, 3, 4]

def getElem(iter):
  print(iter[4])

getElem(lst)

Co je s tímto kódem špatně? Opravte jeho nedostatky.