LoslegenKostenlos loslegen

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

Kurs anzeigen

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 ZeroDivisionError auftritt, gib "Cannot divide by zero!" aus,
  • falls IndexError auftritt, 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))
Code bearbeiten und ausführen