So behandeln Sie Ausnahmen in Python (Try-Except-Finally)
Erfahren Sie, wie Sie Ausnahmen in Python mithilfe der Blöcke „try“, „exclusive“, „else“ und „finally“ behandeln. Schreiben Sie fehlerfreien und absturzsicheren Python-Code.
Übersicht
Robuste Software muss auf unerwartete Bedingungen wie fehlende Dateien, ungültige Benutzereingaben, Datenbankausfälle oder Netzwerkunterbrechungen vorbereitet sein. Wenn in Python ein Fehler auftritt, wird eine Ausnahme ausgelöst. Wenn sie nicht behandelt werden, stoppen Ausnahmen Ihr Programm sofort und geben einen Traceback-Stack aus.
Das wichtigste Tool von Python zur Verwaltung von Laufzeitfehlern ist der „try-exclusive“-Block. Sie platzieren Code, der einen Fehler auslösen könnte, im „try“-Block und definieren Fehlerbehandlungscode in einem oder mehreren „exclusive“-Blöcken. Die Angabe der genauen Ausnahmeklasse (wie „ValueError“ oder „ZeroDivisionError“) wird dringend empfohlen, da das Abfangen aller generischen Ausnahmen („außer:“) Fehler maskieren kann.
Um Ihren Ausnahmefluss ausdrucksvoller zu gestalten, stellt Python zwei zusätzliche Blöcke bereit: „else“ und „finally“. Der „else“-Block wird nur ausgeführt, wenn im „try“-Block keine Ausnahmen ausgelöst wurden, was für Code nützlich ist, der nur bei Erfolg ausgeführt werden soll. Der „finally“-Block wird *immer* ausgeführt, unabhängig davon, ob eine Ausnahme aufgetreten ist, was ihn zum perfekten Ort für Bereinigungen wie das Schließen von Dateien oder Datenbankverbindungen macht.
Code- und Ausführungsausgabe
Dieses Skript demonstriert eine robuste Fehlerbehandlung in Python mit try, außer, else und final.
def divide_numbers(a, b):
try:
# Code that might raise an exception
result = a / b
except ZeroDivisionError:
# Handling a specific exception
print("Error: Cannot divide by zero!")
except TypeError:
# Handling another exception type
print("Error: Inputs must be numbers!")
else:
# Run only if try block succeeded
print(f"Success! Result of {a}/{b} is {result}")
finally:
# Runs no matter what
print("Division attempt completed.")
divide_numbers(10, 2)
print("---")
divide_numbers(10, 0)Success! Result of 10/2 is 5.0
Division attempt completed.
---
Error: Cannot divide by zero!
Division attempt completed.Schrittweise Umsetzung
- Platzieren Sie Code, der fehlschlagen könnte, in einem Try-Block.
- Fangen Sie bestimmte Fehlertypen mit „außer ExceptionType:“-Blöcken ab, um Fehler ordnungsgemäß zu behandeln.
- Verwenden Sie else für Code, der nur bei erfolgreichen Try-Blöcken ausgeführt werden darf.
- Nutzen Sie „final“, um sicherzustellen, dass Bereinigungsaktionen unabhängig von Fehlern ausgeführt werden.
Häufig gestellte Fragen
Kann ich mehrere Ausnahmen in einem einzigen Except-Block abfangen?
Ja, Sie können sie als Tupel übergeben: außer (ValueError, TypeError) als e:.
Wie erhebe ich meine eigenen Ausnahmen?
Verwenden Sie das Schlüsselwort raise, gefolgt von der Ausnahmeinstanz: raise ValueError("Ungültiger Konfigurationswert").
Verwandte Themen
Erfahren Sie, wie Sie in Python mithilfe der Funktion int() einen String in eine Ganzzahl konvertieren. Behandeln Sie Fehler sicher und konvertieren Sie Zahlen aus Binär-, Oktal- oder Hexadezimalwerten.
So lesen Sie eine Datei in PythonErfahren Sie, wie Sie Dateien in Python lesen. Beherrschen Sie die Open-Anweisung, Readline, Readlines und den sicheren Umgang mit Dateiausnahmen.
So schreiben Sie in Python in eine DateiErfahren Sie, wie Sie in Python Text in Dateien schreiben. Meistern Sie den Unterschied zwischen den Modi „Schreiben“ („w“) und Anhängen („a“) mit sicheren Kontextmanagern.
Empfohlene Python-Ressourcen
Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.
Python-Schleifen
Erfahren Sie, wie Sie Python-Schleifen zum Durchlaufen von Daten verwenden. Beherrschen Sie Best Practices für For-Schleifen, While-Schleifen, Break, Continue und Loop anhand interaktiver Beispiele.
Spickzettel für Python-String-Methoden
Ein vollständiges Referenzhandbuch für die Python-String-Manipulation. Meistern Sie das Formatieren, Suchen, Teilen, Ersetzen und Überprüfen von Zeichenfolgeneigenschaften.
Python vs. JavaScript: Welche Programmiersprache ist die beste?
Ein umfassender Vergleich zwischen Python und JavaScript. Entdecken Sie Syntaxunterschiede, Leistung, Anwendungsfälle (Backend vs. Frontend) und Codierungsbeispiele.