CodeGym /Java Kurs /Python SELF DE /Behandlung mehrerer Ausnahmen

Behandlung mehrerer Ausnahmen

Python SELF DE
Level 17 , Lektion 3
Verfügbar

4.1 Abfangen mehrerer Ausnahmen

Python ermöglicht die Behandlung mehrerer Ausnahmen durch die Nutzung mehrerer except-Blöcke oder eines except-Blocks mit einem Tuple von Ausnahmen. Lassen wir uns beide Ansätze anschauen.

Mehrere except-Blöcke

Du kannst mehrere except-Blöcke verwenden, um verschiedene Arten von Ausnahmen unterschiedlich zu behandeln.


try:
    # Code, der eine Ausnahme auslösen könnte
    result = int("abc")
except ValueError:
    print("Fehler: Ungültiger Wert.")
except ZeroDivisionError:
    print("Fehler: Division durch Null.")

Ein except-Block mit einem Tuple von Ausnahmen

Du kannst mehrere Ausnahmen in einem einzigen except-Block behandeln, indem du sie als Tuple übergibst.


try:
    # Code, der eine Ausnahme auslösen könnte
    result = int("abc")
except (ValueError, ZeroDivisionError) as e:
    print(f"Ein Fehler ist aufgetreten: {e}")

Nutzung von except NameError as var

Bei der Behandlung von Ausnahmen kannst du die Syntax except <ExceptionType> as <variable> verwenden, um das Ausnahmeobjekt zu erhalten. So bekommst du Zugang zu Informationen über die Ausnahme, wie zum Beispiel die Fehlermeldung und andere Attribute.


try:
    # Code, der einen NameError auslösen könnte
    print(undeclared_variable)
except NameError as e:
    print(f"Ein Fehler ist aufgetreten: {e}")
    print(f"Fehlertyp: {type(e)}")

4.2 Sichtbarkeit der Fehler-Variable

Die Variable, in der die Ausnahme gespeichert ist (e im obigen Beispiel), ist nur innerhalb ihres except-Blocks verfügbar. Außerhalb dieses Blocks ist die Variable nicht zugänglich.


try:
    # Code, der einen NameError auslösen könnte
    print(undeclared_variable)
except NameError as e:
    print(f"Ein Fehler ist aufgetreten: {e}")
    print(f"Fehlertyp: {type(e)}")
# Hier ist e nicht mehr verfügbar, und die folgende Zeile wird einen NameError auslösen
# print(e)  # NameError: name 'e' is not defined

Wenn du außerhalb des Blocks etwas Wichtiges mit der Ausnahme machen möchtest, dann musst du sie in einer separaten Variable speichern. Beispiel:


exception = None
try:
    # Code, der eine Ausnahme auslösen könnte
    result = int("abc")
except ValueError as e:
    exception = e
    print("Fehler: Ungültiger Wert.")
except ZeroDivisionError as e:
    exception = e
    print("Fehler: Division durch Null.")

print(exception)

Beachte, dass die Variable exception die letzte aufgetretene Ausnahme speichert, was bei der weiteren Verarbeitung außerhalb des try-Blocks nützlich sein kann.

4.3 Was ist nützlich in der Ausnahme enthalten

Das Ausnahmeobjekt enthält Informationen über den Fehler. Je nach Typ der Ausnahme kann das Objekt verschiedene Attribute enthalten.

Hier sind einige allgemeine Attribute, die für die meisten Ausnahmen verfügbar sind:

  • args: Ein Tuple, das die beim Erstellen der Ausnahme übergebenen Argumente enthält. Normalerweise ist dies die Fehlermeldung.
  • message: Ein String, der die Fehlermeldung enthält (in einigen Ausnahmen).
  • __str__: Eine Methode, die die String-Darstellung der Ausnahme zurückgibt. Diese Methode wird verwendet, um die Textdarstellung des Fehlers zu erhalten, die beim Gebrauch der print()-Funktion auf das Ausnahmeobjekt zurückgegeben wird.

Beispiel:


try:
    # Code, der einen ValueError auslösen könnte
    result = int("abc")
except ValueError as e:
    print(f"Ein Fehler ist aufgetreten: {e}")
    print(f"Fehlerargumente: {e.args}")
    print(f"Fehlermeldung: {str(e)}")

Beispielbehandlung mehrerer Ausnahmen


try:
    # Code, der mehrere Ausnahmetypen auslösen könnte
    result = 10 / 0
except (ValueError, ZeroDivisionError) as e:
    print(f"Ein Fehler ist aufgetreten: {e}")
    print(f"Fehlertyp: {type(e)}")
    print(f"Fehlerargumente: {e.args}")

Wenn ein ValueError oder ZeroDivisionError auftritt, wird er vom except-Block abgefangen. Die Informationen über die Ausnahme sind über die Variable e zugänglich. Die Ausgabe enthält den Fehlertyp und die beim Erstellen der Ausnahme übergebenen Argumente.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION