Przechwytywanie wyjątków
Zanim zaczniesz pisać własne niestandardowe wyjątki, upewnij się, że masz opanowane podstawy obsługi wyjątków.
W tym ćwiczeniu otrzymujesz funkcję invert_at_index(x, ind), która przyjmuje dwa argumenty: listę x oraz indeks ind, a następnie odwraca element listy pod tym indeksem. Na przykład invert_at_index([5,6,7], 1) zwraca 1/6, czyli 0.166666.
Uruchom kod w obecnej postaci i sprawdź wynik w konsoli. W tej funkcji znajdują się dwie ryzykowne operacje: po pierwsze, jeśli element, który próbujemy odwrócić, ma wartość 0, kod zgłosi wyjątek ZeroDivisionError. Po drugie, jeśli przekazany indeks wykracza poza zakres listy, kod zgłosi wyjątek IndexError. W obu przypadkach działanie skryptu zostanie przerwane, co może być niepożądane.
To ćwiczenie jest częścią kursu
Programowanie obiektowe w Pythonie
Instrukcje do ćwiczenia
Użyj wzorca try - except - except (z dwoma blokami except) wewnątrz funkcji, aby przechwycić i obsłużyć dwa wyjątki w następujący sposób:
- w bloku
trywykonaj kod w obecnej postaci, - jeśli wystąpi
ZeroDivisionError, wyświetl"Cannot divide by zero!", - jeśli wystąpi
IndexError, wyświetl"Index out of range!"
Jeśli wszystko działa poprawnie, kod uruchomi się bez błędów, a wynik w konsoli będzie wyglądał tak:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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))