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
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
tryspustí 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))