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:
tryden Code so auszuführen, wie er ist,- Wenn
ZeroDivisionErrorauftritt, drucke"Cannot divide by zero!", - wenn
IndexErrorauftritt, 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
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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))