Funkce s výjimkou v Pythonu
Výjimky je velmi pohodlné vyhazovat, popisovat je ve funkcích pomocí podmínek.
Pojďme vytvořit funkci get_sum,
která vypíše součet prvků
seznamu pouze pokud je délka seznamu menší
nebo rovna 3. V opačném případě
nechť je vyhozena naše výjimka ToBigLength:
def get_sum(lst):
if len(lst) <= 3:
return sum(lst)
else:
raise ToBigLength
Nyní předáme funkci get_sum
seznam a vypíšeme funkci do konzole:
lst = [1, 2, 3, 4]
print(get_sum(lst)) # vypíše 6
Také ve funkcích lze nastavit zachycení
několika typů výjimek. Pojďme
vytvořit ještě jednu třídu výjimek ToSmallLength:
class ToSmallLength(Exception):
pass
Nyní popíšeme ve funkci podmínku, pokud
je délka seznamu rovna nule, nechť je vyhozena
ToSmallLength. Pokud nebude zachycena
žádná výjimka, nechť je vypsán
součet všech prvků seznamu:
def get_sum(lst):
if len(lst) > 3:
raise ToBigLength
if len(lst) == 0:
raise ToSmallLength
else:
return sum(lst)
Pro pohodlí lze uzavřít seznam, který
bude předán do parametru funkce,
samotnou funkci a její volání do bloku try.
A zachycení našich dvou výjimek umístíme
v blocích except:
try:
lst = [1, 2, 3]
res = get_sum(lst)
print(res)
except ToBigLength:
print('error 1')
except ToSmallLength:
print('error 2')
Vytvořte funkci, která jako parametr bude
přijímat číslo. V ní popište podmínky,
pokud je číslo záporné a rovno nule,
nechť jsou vyhozeny odpovídající výjimky.
v opačném případě nechť je číslo
vynásobeno 3.
Vyzkoušejte funkci, kterou jste vytvořili, pomocí
konstrukce try-except. Při
tom také zachyťte vaše výjimky.