Fangen von Ausnahmen
Bevor du anfängst, deine eigenen Ausnahmen zu schreiben, solltest du die Grundlagen des Umgangs mit Ausnahmen beherrschen.
In dieser Übung erhältst du eine Funktion invert_at_index(x, ind)
, die zwei Argumente annimmt, eine Liste x
und einen Index ind
, und das Element der Liste an diesem Index invertiert. Zum Beispiel gibt invert_at_index([5,6,7], 1)
1/6
zurück, oder 0.166666
.
Versuche, den Code so auszuführen, wie er ist, und prüfe die Ausgabe in der Konsole. Es gibt zwei unsichere Operationen in dieser Funktion: Erstens, wenn das Element, das wir versuchen zu invertieren, den Wert 0
hat, dann wird der Code eine ZeroDivisionError
Ausnahme verursachen. Zweitens, wenn der an die Funktion übergebene Index außerhalb des Listenbereichs liegt, verursacht der Code eine IndexError
. In beiden Fällen wird das Skript unterbrochen, was möglicherweise nicht erwünscht ist.
Diese Übung ist Teil des Kurses
Objektorientierte Programmierung in Python
Anleitung zur Übung
Verwende ein try
- except
- except
Muster (mit zwei except
Blöcken) innerhalb der Funktion, um zwei Ausnahmen wie folgt abzufangen und zu behandeln:
try
den Code so auszuführen, wie er ist,- Wenn
ZeroDivisionError
auftritt, drucke"Cannot divide by zero!"
, - wenn
IndexError
auftritt, drucken"Index out of range!"
Du weißt, dass du es richtig gemacht hast, wenn der Code ohne Fehler läuft und die Ausgabe in der Konsole ist:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# 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))