Ausnahmen abfangen
Bevor du eigene benutzerdefinierte Ausnahmen schreibst, stell sicher, dass du die Grundlagen der Ausnahmebehandlung beherrschst.
In dieser Übung bekommst du eine Funktion invert_at_index(x, ind), die zwei Argumente erwartet: eine Liste x und einen Index ind. Sie invertiert das Listenelement an diesem Index. Zum Beispiel gibt invert_at_index([5,6,7], 1) 1/6 bzw. 0.166666 zurück.
Führe den Code zunächst unverändert aus und sieh dir die Ausgaben in der Konsole an. Es gibt zwei unsichere Operationen in dieser Funktion: Erstens, wenn das zu invertierende Element den Wert 0 hat, löst der Code eine ZeroDivisionError-Ausnahme aus. Zweitens, wenn der an die Funktion übergebene Index außerhalb des Bereichs der Liste liegt, verursacht der Code einen 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 innerhalb der Funktion ein try-except-except-Muster (mit zwei except-Blöcken), um zwei Ausnahmen wie folgt abzufangen und zu behandeln:
try: führe den vorhandenen Code aus,- falls
ZeroDivisionErrorauftritt, gib"Cannot divide by zero!"aus, - falls
IndexErrorauftritt, gib"Index out of range!"aus
Du weißt, dass alles stimmt, wenn der Code ohne Fehler läuft und die Ausgabe in der Konsole wie folgt 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))