Implementierung eines try-except-Blocks
Im vorherigen Schritt haben Sie gesehen, wie Ausnahmen (Exceptions) dazu führen können, dass ein Programm abrupt beendet wird. Um Ausnahmen gracefully zu behandeln und Programmabstürze zu vermeiden, können Sie try
- und except
-Blöcke verwenden.
Ein try
-Block ermöglicht es Ihnen, einen Codeabschnitt einzuschließen, der möglicherweise eine Ausnahme auslöst. Wenn innerhalb des try
-Blocks eine Ausnahme auftritt, springt das Programm zum entsprechenden except
-Block, in dem Sie die Ausnahme behandeln können.
Lassen Sie uns die Datei exceptions_example.py
so ändern, dass sie einen try-except
-Block enthält, um den ZeroDivisionError
zu behandeln. Öffnen Sie die Datei exceptions_example.py
im VS Code-Editor und ändern Sie sie wie folgt:
## ~/project/exceptions_example.py
def divide(x, y):
try:
result = x / y
return result
except ZeroDivisionError:
return "Cannot divide by zero!"
print(divide(10, 2))
print(divide(5, 0))
print(divide(8, 4))
In diesem geänderten Code:
- Wir haben einen
try
-Block um die Operation x / y
hinzugefügt. Dies bedeutet, dass wenn während der Division ein ZeroDivisionError
auftritt, das Programm zum except
-Block springt.
- Die Zeile
except ZeroDivisionError:
gibt an, dass wir ZeroDivisionError
-Ausnahmen behandeln möchten.
- Innerhalb des
except
-Blocks geben wir die Zeichenkette "Cannot divide by zero!"
zurück. Diese wird in der Konsole ausgegeben, anstatt dass das Programm abstürzt.
Lassen Sie uns nun das geänderte Skript ausführen. Öffnen Sie das Terminal in VS Code und führen Sie den folgenden Befehl aus:
python ~/project/exceptions_example.py
Sie werden eine Ausgabe ähnlich der folgenden sehen:
5.0
Cannot divide by zero!
2.0
Wie Sie sehen können, stürzt das Programm nicht mehr ab, wenn Sie durch Null teilen. Stattdessen fängt der except
-Block den ZeroDivisionError
ab, und die Nachricht "Cannot divide by zero!"
wird ausgegeben. Das Programm setzt dann die Ausführung fort, und die letzte print
-Anweisung wird ebenfalls erfolgreich ausgeführt.
try-except
-Blöcke können auch verwendet werden, um andere Arten von Ausnahmen zu behandeln. Beispielsweise können Sie einen try-except
-Block verwenden, um TypeError
-Ausnahmen zu behandeln, die auftreten können, wenn Sie einen Vorgang mit inkompatiblen Datentypen ausführen. Sie können auch mehrere except
-Blöcke haben, um verschiedene Arten von Ausnahmen zu behandeln.
Im nächsten Schritt lernen Sie, wie Sie pytest
verwenden können, um auf Ausnahmen zu testen.