Funkcja z wyjątkiem w Pythonie
Wyjątki są bardzo wygodne do wyrzucania, opisując je w funkcjach za pomocą warunków.
Stwórzmy funkcję get_sum,
która będzie zwracać sumę elementów
listy tylko, jeśli długość listy jest mniejsza
lub równa 3. W przeciwnym razie,
niech zostanie rzucony nasz wyjątek ToBigLength:
def get_sum(lst):
if len(lst) <= 3:
return sum(lst)
else:
raise ToBigLength
Teraz przekażmy do funkcji get_sum
listę i wypiszmy wynik funkcji w konsoli:
lst = [1, 2, 3, 4]
print(get_sum(lst)) # wyświetli 6
Również w funkcjach można ustawiać przechwytywanie
kilku typów wyjątków. Stwórzmy
jeszcze jedną klasę wyjątków ToSmallLength:
class ToSmallLength(Exception):
pass
Teraz opiszmy w funkcji warunek, jeśli
długość listy jest równa zero, to niech zostanie rzucony
ToSmallLength. Jeśli nie zostanie przechwycony
żaden wyjątek, to niech zostanie zwrócona
suma wszystkich elementów listy:
def get_sum(lst):
if len(lst) > 3:
raise ToBigLength
if len(lst) == 0:
raise ToSmallLength
else:
return sum(lst)
Dla wygody można umieścić listę, która
będzie przekazywana do parametru funkcji,
samą funkcję i jej wywołanie w bloku try.
A przechwytywanie naszych dwóch wyjątków umieśćmy
w blokach except:
try:
lst = [1, 2, 3]
res = get_sum(lst)
print(res)
except ToBigLength:
print('error 1')
except ToSmallLength:
print('error 2')
Stwórz funkcję, która parametrem będzie
przyjmować liczbę. W niej opisz warunki,
jeśli liczba jest ujemna lub równa zero, to
niech zostaną rzucone odpowiednie wyjątki.
W przeciwnym razie niech liczba zostanie
pomnożona przez 3.
Sprawdź działanie stworzonej przez ciebie funkcji z
pomocą konstrukcji try-except. Przy
tym również przechwyć twoje wyjątki.