Python Fehlerbehandlung: try-except-finally richtig anwenden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Exception Handling in Python: Das komplette Tutorial

Fehler sind ein unvermeidlicher Teil der Softwareentwicklung. Selbst der sorgfältigste Code kann auf unerwartete Situationen stoßen: eine fehlende Datei, eine Division durch Null, Netzwerkprobleme und vieles mehr. Um einen Programmabsturz in solchen Fällen zu verhindern, bietet Python einen leistungsstarken Mechanismus zur Ausnahmebehandlung, der auf den Konstrukten try-except-finally basiert.

Wie funktioniert try-except-finally in Python?

Das Konstrukt try-except-finally ermöglicht es, Ausnahmen (Exceptions) abzufangen, die während der Programmausführung auftreten, und angemessen darauf zu reagieren.

Allgemeine Syntax:

try:
    # Code, der eine Exception auslösen könnte
except SomeException:
    # Code zur Behandlung der Exception
finally:
    # Code, der auf jeden Fall ausgeführt wird

Erklärung der Blöcke:

  • try: In diesem Block steht der Hauptcode, in dem potenziell eine Exception auftreten kann.
  • except: Hier wird festgelegt, was passieren soll, wenn im try-Block eine Exception auftritt. Du kannst einen bestimmten Exception-Typ angeben (z.B. SomeException), der abgefangen werden soll.
  • finally: Der finally-Block wird immer ausgeführt – unabhängig davon, ob im try-Block eine Exception ausgelöst wurde oder nicht. Er wird typischerweise zum Freigeben von Ressourcen verwendet, wie dem Schließen von Dateien, Netzwerkverbindungen oder Datenbankverbindungen.

Beispiel für try-except-finally

try:
    number = int(input("Gib eine ganze Zahl ein: "))
    result = 10 / number
    print(f"Ergebnis: {result}")
except ZeroDivisionError:
    print("Fehler: Division durch Null ist nicht erlaubt.")
except ValueError:
    print("Fehler: Bitte gib eine gültige ganze Zahl ein.")
finally:
    print("Programm wird beendet.")

Wie dieser Code funktioniert:

  1. Das Programm fordert den Benutzer zur Eingabe einer ganzen Zahl auf.
  2. Wenn der Benutzer 0 eingibt, wird eine ZeroDivisionError-Exception ausgelöst und der entsprechende except-Block ausgeführt.
  3. Wenn der Benutzer keine ganze Zahl eingibt, wird eine ValueError-Exception ausgelöst und der entsprechende except-Block ausgeführt.
  4. Der finally-Block wird in jedem Fall ausgeführt und gibt eine Meldung aus, dass das Programm beendet wird.

Wozu dient der finally-Block?

Der finally-Block stellt sicher, dass wichtiger Code unabhängig vom Auftreten einer Exception ausgeführt wird. Hier sind einige häufige Anwendungsfälle:

  • Dateien schließen:

    file = open("data.txt", "r")
    try:
        content = file.read()
        # Inhalt der Datei verarbeiten
    finally:
        file.close()  # Garantiertes Schließen der Datei
    
  • Ressourcen freigeben: Freigabe von Netzwerkverbindungen, Datenbankverbindungen und anderen Ressourcen, die nach der Nutzung geschlossen oder freigegeben werden müssen.

  • Logging abschließen oder temporäre Daten bereinigen: Der finally-Block kann verwendet werden, um das Schreiben in eine Logdatei abzuschließen oder temporäre Dateien zu löschen, die während der Programmausführung erstellt wurden.

Mehrere Exceptions abfangen

In einem einzigen try-Block können verschiedene Arten von Exceptions auftreten. Python bietet mehrere Möglichkeiten, damit umzugehen:

Verwendung mehrerer except-Blöcke

try:
    number = int(input("Gib eine Zahl ein: "))
    result = 100 / number
    print(resu                

Blogs

Buchempfehlungen