Mehrere Ausnahmen behandeln
Ein Codeblock kann potenziell verschiedene Arten von Ausnahmen auslösen. Python ermöglicht es Ihnen, mehrere Ausnahmen zu behandeln, indem Sie entweder mehrere except-Klauseln verwenden oder Ausnahmen in einer einzigen except-Klausel gruppieren.
Schreiben wir ein Skript, das eine Division durchführt. Diese Operation kann einen ValueError auslösen, wenn die Eingabe keine Zahl ist, und einen ZeroDivisionError, wenn der Divisor Null ist.
Öffnen Sie in der WebIDE die Datei ~/project/handle_multiple_exceptions.py und fügen Sie den folgenden Code hinzu. Diese Version verwendet separate except-Blöcke für jeden Fehlertyp.
try:
numerator = int(input("Enter the numerator: "))
denominator = int(input("Enter the denominator: "))
result = numerator / denominator
print(f"Result: {result}")
except ValueError:
print("Invalid input. Please enter integers only.")
except ZeroDivisionError:
print("Error: Division by zero is not allowed.")
Speichern Sie die Datei und führen Sie sie im Terminal aus:
python ~/project/handle_multiple_exceptions.py
Testen Sie das Skript mit verschiedenen Eingaben, um jede Ausnahme auszulösen:
- Geben Sie einen Wert ein, der keine Ganzzahl ist (z. B.
abc).
- Geben Sie
0 für den Nenner ein.
- Geben Sie für beide gültige Ganzzahlen ein.
Beispielausgabe für Division durch Null:
Enter the numerator: 10
Enter the denominator: 0
Error: Division by zero is not allowed.
Sie können mehrere Ausnahmen auch mit einer einzigen except-Klausel behandeln, indem Sie sie in einem Tupel gruppieren. Dies ist nützlich, um für verschiedene Fehler die gleiche Aktion durchzuführen.
Aktualisieren Sie nun den Code in ~/project/handle_multiple_exceptions.py, um diesen gruppierten Ansatz zu verwenden:
try:
numerator = int(input("Enter the numerator: "))
denominator = int(input("Enter the denominator: "))
result = numerator / denominator
print(f"Result: {result}")
except (ValueError, ZeroDivisionError):
print("An error occurred: Invalid input or division by zero.")
Speichern Sie die Datei und führen Sie sie erneut mit denselben Testfällen aus, um die neue, kombinierte Fehlermeldung zu beobachten.