Začněte nyníZačněte zdarma

Zachytávání výjimek

Než začneš psát vlastní výjimky, ujistíme se, že ovládáš základy jejich zachytávání.

V tomto cvičení máš k dispozici funkci invert_at_index(x, ind), která přijímá dva argumenty – seznam x a index ind – a vrátí převrácenou hodnotu prvku seznamu na daném indexu. Například invert_at_index([5,6,7], 1) vrátí 1/6, tedy 0.166666.

Spusť kód tak, jak je, a prohlédni si výstup v konzoli. Funkce obsahuje dvě potenciálně nebezpečné operace: zaprvé, pokud má prvek, který se pokoušíme invertovat, hodnotu 0, dojde k výjimce ZeroDivisionError. Zadruhé, pokud je předaný index mimo rozsah seznamu, dojde k výjimce IndexError. V obou případech se skript přeruší, což nemusí být žádoucí.

Toto cvičení je součástí kurzu

Object-Oriented Programming in Python

Zobrazit kurz

Pokyny k cvičení

Uvnitř funkce použij vzor try - except - except (se dvěma bloky except) pro zachycení a ošetření dvou výjimek:

  • blok try spustí kód tak, jak je,
  • pokud nastane ZeroDivisionError, vypiš "Cannot divide by zero!",
  • pokud nastane IndexError, vypiš "Index out of range!"

Správné řešení poznáš tak, že kód proběhne bez chyb a výstup v konzoli bude:

0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# MODIFY the function to catch exceptions
def invert_at_index(x, ind):
    return 1/x[ind]
 
a = [5,6,0,7]

# Works okay
print(invert_at_index(a, 1))

# Potential ZeroDivisionError
print(invert_at_index(a, 2))

# Potential IndexError
print(invert_at_index(a, 5))
Upravit a spustit kód