Zugriff auf Ausnahme-Argumente (Exception args)
In diesem Schritt lernen Sie, wie Sie auf die Argumente (args), die einer Ausnahme (exception) in Python zugeordnet sind, zugreifen können. Ausnahme-Argumente können genauere Details über den aufgetretenen Fehler liefern.
Ändern wir die exceptions.py
-Datei, die Sie im vorherigen Schritt erstellt haben, um auf die Ausnahme-Argumente zuzugreifen und sie auszugeben. Öffnen Sie exceptions.py
in Ihrem ~/project
-Verzeichnis mit dem VS Code-Editor.
## exceptions.py
def divide(x, y):
try:
result = x / y
print("The result is:", result)
except Exception as e:
print("An error occurred:", type(e), e.args)
divide(10, 2)
divide(10, 0)
divide("hello", 5)
In diesem Code haben wir den except
-Block so geändert, dass e.args
ausgegeben wird. Das args
-Attribut ist ein Tupel, das die Argumente enthält, die an den Konstruktor der Ausnahme übergeben wurden.
Jetzt führen wir das exceptions.py
-Skript aus:
python exceptions.py
Sie sollten die folgende Ausgabe sehen:
The result is: 5.0
An error occurred: <class 'ZeroDivisionError'> ('division by zero',)
An error occurred: <class 'TypeError'> ("unsupported operand type(s) for /: 'str' and 'int'",)
Wie Sie sehen können, enthält die Ausgabe jetzt die Argumente, die jeder Ausnahme zugeordnet sind. Bei ZeroDivisionError
ist das Argument ein Tupel, das die Zeichenkette 'division by zero'
enthält. Bei TypeError
ist das Argument ein Tupel, das die Zeichenkette "unsupported operand type(s) for /: 'str' and 'int'"
enthält.
Ändern wir die exceptions.py
-Datei erneut, um direkt auf das erste Argument zuzugreifen:
## exceptions.py
def divide(x, y):
try:
result = x / y
print("The result is:", result)
except Exception as e:
print("An error occurred:", type(e), e.args[0])
divide(10, 2)
divide(10, 0)
divide("hello", 5)
Führen Sie das Skript erneut aus:
python exceptions.py
Sie sollten die folgende Ausgabe sehen:
The result is: 5.0
An error occurred: <class 'ZeroDivisionError'> division by zero
An error occurred: <class 'TypeError'> unsupported operand type(s) for /: 'str' and 'int'
Durch den Zugriff auf e.args[0]
können wir das erste Argument der Ausnahme extrahieren, das oft der beschreibendste Teil der Fehlermeldung ist.