Python Try/Except und Fehlerbehandlung
Verhindern Sie, dass Ihre Python-Skripte abstürzen. Erfahren Sie, wie Sie Try-Except- und Finally-Blöcke erstellen und wie Sie benutzerdefinierte Ausnahmen richtig auslösen.
Übersicht
In der realen Programmierwelt sind Fehler völlig unvermeidbar. Möglicherweise werden Dateien gelöscht, Netzwerkverbindungen werden unterbrochen oder ein Benutzer gibt möglicherweise einen Buchstaben ein, obwohl Ihr Skript eine Zahl erwartet hat. Wenn diese Szenarien ohne Sicherheitsvorkehrungen auftreten, stoppt Python die Ausführung und löst eine Ausnahme (einen Laufzeitfehler) aus, wodurch das gesamte Programm abstürzt. Bei der Fehlerbehandlung handelt es sich um die Kunst, Fehler frühzeitig zu erkennen und zu bewältigen.
Die Grundlage des Fehlermanagements in Python ist die Blockstruktur „try“ und „exclusive“. Sie platzieren den potenziell gefährlichen Code im „try“-Block. Python wird versuchen, es auszuführen. Tritt ein Fehler auf, stürzt Python nicht ab, sondern fängt die Ausnahme ab und springt sofort nach unten, um den im „Exception“-Block enthaltenen Code auszuführen. Dadurch kann das Programm wiederhergestellt werden, eine benutzerfreundliche Fehlermeldung angezeigt und die Ausführung fortgesetzt werden.
Es ist eine wichtige Best Practice, bestimmte, gezielte Ausnahmen abzufangen, anstatt einen pauschalen „Exception:“-Block zu schreiben. Durch das Abfangen von „FileNotFoundError“ oder „ValueError“ wird beispielsweise explizit sichergestellt, dass Sie genau das Problem behandeln, das Sie erwartet haben, anstatt versehentlich nicht zusammenhängende Fehler (wie einen Syntaxfehler) zu maskieren, über die Sie wirklich Bescheid wissen müssen.
Python bietet außerdem einen optionalen „else“-Block, der nur ausgeführt wird, wenn der „try“-Block vollständig erfolgreich abgeschlossen wurde, ohne dass Fehler auftreten. Dies ist der perfekte Ort, um eine Logik zu platzieren, die absolut vom Erfolg der gefährlichen Operation abhängt. Darüber hinaus bietet der „finally“-Block eine Möglichkeit, Code auszuführen, unabhängig davon, was passiert – ob ein Fehler aufgetreten ist oder nicht. Der „finally“-Block ist für Bereinigungsaktionen wie das Schließen von Datenbankverbindungen oder das Aufheben von Dateisperren von entscheidender Bedeutung.
Über das Abfangen von Fehlern hinaus ermöglicht Python Entwicklern, diese mithilfe des Schlüsselworts „raise“ explizit auszulösen. Durch das Auslösen einer Ausnahme können Sie strenge Einschränkungen in Ihrer Logik erzwingen und ungültige Daten ablehnen, bevor sie Ihren Anwendungsstatus beschädigen. Durch die Definition benutzerdefinierter Ausnahmeklassen, die von Pythons Basisklasse „Exception“ erben, können Entwickler hochgradig domänenspezifische Fehlerhierarchien für umfangreiche Unternehmensanwendungen erstellen.
Code- und Ausführungsausgabe
Schaffung struktureller Sicherheit bei der Interaktion mit potenziell gefährlichen oder nicht vorhandenen Dateistrukturen.
def divide_numbers(a, b):
try:
result = a / b
except ZeroDivisionError:
return "Error: Cannot divide by zero!"
except TypeError:
return "Error: Both arguments must be numbers."
else:
return f"The result is {result}"
finally:
print("Execution completed.")
print(divide_numbers(10, 2))
print(divide_numbers(10, 0))Execution completed.
The result is 5.0
Execution completed.
Error: Cannot divide by zero!Schrittweise Umsetzung
- Validierung von Benutzerformulareinsendungen
- Sicherstellen, dass Netzwerkanfragen bei Zeitüberschreitung nicht abstürzen
- Sicheres Schließen von Datenbankverbindungen in einem „finally“-Block
Häufig gestellte Fragen
Was ist das Schlüsselwort „raise“?
Das Schlüsselwort raise wird verwendet, um gezielt eine Ausnahme auszulösen. Sie können festlegen, welche Art von Fehler ausgegeben werden soll und welchen Text der Benutzer ausgeben möchte.
Verwandte Themen
Beherrschen Sie Python-Funktionen. Erfahren Sie, wie Sie mit def wiederverwendbaren Code schreiben, Argumente definieren, Werte zurückgeben und den lokalen und globalen Bereich verstehen.
Python-Klassen und objektorientierte ProgrammierungEine vollständige Einführung in Python-Klassen, -Objekte, -Vererbung und -OOP-Konzepte. Erstellen Sie robuste Datenmodelle und skalieren Sie Ihre Python-Anwendungen.
Empfohlene Python-Ressourcen
Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.
So sortieren Sie eine Liste in Python
Erfahren Sie, wie Sie eine Liste in Python mit der Methode sort() und der Funktion sorted() sortieren. Entdecken Sie Beispiele für benutzerdefinierte Schlüsselsortierung und umgekehrte Reihenfolge.
In Python integriertes Spickzettel für Ausnahme- und Fehlertypen
Referenzhandbuch für häufige Python-Fehlertypen. Erfahren Sie, wie Sie ValueError, TypeError, IndexError und KeyError debuggen und Ausnahmen auslösen.
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.