Zum Inhalt springen

Python Try Except – einfach erklärt!

  • Python

Python Try Except ist eine Möglichkeit sogenannte Ausnahmen (engl.: Exceptions) in Python Programmen zu handhaben, damit die Anwendung nicht abstürzt. Mithilfe von Python Try Except können entstehende Ausnahmen gezielt abgefangen und behandelt werden.

Was ist der Unterschied zwischen Syntax Errors und Exceptions?

Wie wir wahrscheinlich schon alle leidvoll erfahren mussten, beendet Python ein laufendes Programm, sobald ein Fehler oder eine Ausnahme auftritt. Hierbei muss eine wichtige Unterscheidung getroffen werden. Der Code kann zum einen aufgrund von Syntaxfehlern stoppen, also durch schlichtweg falsch geschriebenen Code, der nicht interpretiert werden kann, oder eben durch Ausnahmen, also syntaktisch richtige Codebestandteile, die jedoch während der Ausführung zu Problemen führen.

Einen Syntax Error kann man beispielsweise durch falsch gesetzte Klammern herbeiführen:

Python Try Except

Bei Ausnahmen hingegen, handelt es sich um Fehler, die während der Ausführung der Anwendung aufkommen, obwohl der Code syntaktisch richtig ist. Das kann zum Beispiel passieren, wenn man versucht einen String und eine Zahl zusammen zu addieren. Der Code ist an sich richtig geschrieben, aber die Umsetzung dieser Operation ist nicht möglich:

Python Try Except

Welche Arten von Exceptions gibt es in Python?

In Python gibt es viele verschiedene Arten von Ausnahmen, die bei der Ausführung von Code auftreten können. Die folgende Aufzählung beschreibt die häufigsten, jedoch nicht alle, Arten von Exceptions:

  • AssertionError: Diese Exception tritt auf, wenn der Befehl “assert” nicht richtig verwendet wurde oder Fehler erzeugt.
  • ImportError: Wenn es Probleme beim Import von Modulen gibt, erhält man einen Import Error. Dies kann zum Beispiel passieren, wenn ein Modul, wie Pandas, noch nicht installiert wurde, falsche oder nicht existierende Funktionen aus einem Modul geladen werden sollen oder das Modul mit dem angegebenen Namen schlicht nicht existiert.
  • IndexError: Bei der Arbeit mit Python Datenobjekten, die einen Index besitzen, wie beispielsweise Python Tuple oder Python Listen, kann es zu einem IndexError kommen, wenn Indexes benutzt werden, die nicht im Objekt gefunden werden können.
  • KeyError: Ähnlich zum IndexError taucht der KeyError bei der Arbeit mit Python Dictionaries auf, wenn ein Schlüssel nicht in einem Dictionary Objekt gefunden werden konnte.
  • MemoryError: Wenn der Arbeitsspeicher der Maschine nicht mehr ausreicht, um das Python Programm weiterhin auszuführen, kommt es zu einem MemoryError.
  • UnboundLocalError: Wenn man mit lokalen Variablen arbeitet, kann es zu einem UnboundLocalError kommen, sobald man auf eine Variable referenziert, auf die im Vorhinein noch gar nicht definiert wurde, also der noch kein Wert zugeordnet werden konnte.

Wie funktioniert Python Try Except?

Die Python Try Except Funktionalität ermöglicht es, mit möglichen Exceptions gezielt umgehen zu können, indem man eine Routine definiert, die den Umgang mit Ausnahme genauestens beschreibt. Das ist vor allem dann sinnvoll, wenn die Wahrscheinlichkeit für eine Exception sehr hoch ist oder eine Unterbrechung des Programms auf jeden Fall verhindert werden soll.

Dazu verwendet man zwei Blöcke: Try und Except. Im Try-Block wird der Code hinzugefügt, der möglicherweise Exceptions bei der Ausführung hervorrufen kann. Wenn dieser Code-Block ohne Probleme abläuft, wird der nachfolgende Except-Block einfach übersprungen und der Code danach ausgeführt. Im Fall, dass es im Try-Block jedoch zu einer Ausnahme kommt, wird automatisch der Code im Except-Block ausgeführt.

Python Try Except

In diesem Fall wird die Addition von a und b immer ausgeführt, außer wenn Werte für die beiden Variablen übergeben werden, die keine Zahl sind. Dann würde es eigentlich einen ValueError geben, der jedoch von unserer Python Try Except Schleife abgefangen wird. Statt dem ValueError wird dann der Text “a, b or both were not numbers. Please try again with different values” ausgegeben.

Jedoch muss man in einer Python Try Except Schleife nicht unbedingt die konkrete Ausnahme angeben, auf die reagiert werden soll, es kann auch so definiert werden, dass es bei jeglicher Exception den Except-Block ausführt. Außerdem kann mithilfe von “finally” eine Routine definiert werden, für den Fall, dass das Programm ohne Exception ausgekommen ist.

Python Try Except

In welchen Anwendungen ist es sinnvoll Python Try Except zu nutzen?

Im Bereich von Data Science macht es in vielen Anwendungen Sinn, eine Python Try Except Schleife zu nutzen, um das Programm nicht vorzeitig zu beenden:

  • Aufbereitung von großen Datensätzen: Wenn man für Machine Learning große Datensätze vorbereiten will, um sie als Trainingsdatensatz zu nutzen, kann die Aufbereitung nicht selten auch mehrere Stunden in Anspruch nehmen. Je nach Qualität des Datensatzes, stimmen nicht alle Datentypen mit den vorgegebenen überein. Gleichzeitig will man jedoch verhindern, dass das Programm nach der Hälfte der Zeit stoppt und man es nicht mitbekommt. Dafür kann kann man eine Python Try Except Schleife nutzen, um einzelne Datensätze, deren Datenqualität nicht stimmt und zu Exceptions führen würden, einfach zu überspringen.
  • Logging von Software: Auch hier wird die Python Try Except Schleife benötigt, da die produktive Anwendung weiterhin funktionieren soll. Über den Except Block lässt sich der Fehler in den Logs ausgeben und kann dann ausgewertet werden. Nachdem der Fehler in einer neueren Version behoben wurde, lässt sich der neue Stand deployen und stellt sicher, dass die Downtime der Anwendung so gering wie möglich ist.

Welche Best-Practices gibt es zur Nutzung von Python Try Except?

Bei der Nutzung von Python Try Except sollte man einige Best Practices beachten, um es problemlos nutzen zu können und das Maximale aus dieser Anweisung herausholen zu können.

  • Sei spezifisch mit den except-Anweisungen: In den meisten Fällen ist es am besten, nur die spezifischen Ausnahmetypen abzufangen mit deren Auftreten zu rechnen ist. Dabei sollten nicht pauschal mit einer allgemeinen except-Anweisung alle möglichen Ausnahmen abgefangen werden. Dadurch wird der Code lesbarer und einfacher zu warten.
  • Verwende finally für Bereinigungscode: Der finally-Block ist eine gute Möglichkeit um Code auszuführen, der immer ausgeführt werden sollte, egal ob es zu einer Ausnahme kam oder nicht. Hier bietet es sich zum Beispiel an Dateien zu schließen oder andere Ressourcen freizugeben.
  • Vermeide die Verwendung von try-except für den Kontrollfluss: Die Python try except Anweisung ist etwas fundamental anderes als bedingte Anweisungen, wie beispielsweise das if Statement. Sie sollte nicht für den Kontrollfluss verwendet werden, also um bestimmte Fälle abzufangen. Dies kann zum Beispiel schnell passieren, wenn man ein Teilen durch Null verhindern will. Solche Fälle sollten über bedingte Anweisungen gehandhabt werden und nicht mithilfe von Ausnahmen.
  • Protokolliere Fehler für die Fehlersuche: Nutze die Möglichkeit im Except-Block wichtige Informationen für Debugging-Zwecke auszugeben und zu protokollieren. Dies kann bei der Fehlersuche hilfreich sein und kann außerdem Licht ins Dunkle bringen.
  • Löse Ausnahmen aus, wenn es angebracht ist: MIthilfe von raise lassen sich auch benutzerbedingte Ausnahmen auslösen, die nicht im Standard von Python enthalten sind. Nutze diese, um außergewöhnliche Bedingungen auszulösen, die individuell für Dein Programm sind und unbedingt behandelt werden sollten.
  • Verwende Kontextmanager für die Ressourcenverwaltung: Bei der Arbeit mit Ressourcen, wie beispielsweise Dateien, kann es sinnvoller sein mit Kontextmanagern, wie der with-Anweisung zu arbeiten, statt mit Ausnahmen. So kann sichergestellt werden, dass die Ressourcen gut verwaltet werden und freigegeben werden, wenn sie nicht mehr benötigt werden.

Mithilfe dieser Tipps kann Dein Code robuster und wartbarer gemacht werden. Sie ermöglichen den sinnvollen Einsatz von Python Try Except Anweisungen und einen qualitativen Code.

Was sind Python Tracebacks und wie hängen sie mit Python Try Except zusammen?

Obwohl sich Fehler in der Python Programmierung nicht vermeiden lassen, gibt es Wege, wie man das Auftreten des Fehlers verstehen und ihn schnellmöglichst beheben kann. Die sogenannten Exception Tracebacks dienen dazu einen Einblick zu geben, was zu dem Fehler geführt hat. Es sind detaillierte Berichte, die aufzeigen, welche Codezeile den Fehler ausgelöst haben und bei welcher Abfolge des Funktionsaufrufs es zu Problemen kam. Somit hilft Dir der Traceback den genauen Ort des Fehlers zu finden und den Ausführungsfluss zu verstehen, der zum Fehler geführt hat.

Bei der Arbeit mit Python Try Except sind diese Tracebacks erstmal nicht relevant, da der try-Block gerade versucht den Fehler zu umgehen. Für den Fall, dass es trotz der Nutzung von Python Try Except zum Fehler kommt, kann der Traceback genutzt werden, um eine Rückverfolgung zu starten.

Wenn es innerhalb eines try-Blocks zu einem Fehler kommt, stoppt Python nicht direkt, sondern es erzeugt eine strukturierte Auflistung der Aufrufe, die vor dem Fehler stattgefunden haben und dann schließlich zu der Ausnahme geführt haben. In dieser Rückverfolgung sind detaillierte Informationen enthalten, wie beispielsweise Dateinamen, Zeilennummern und Funktionsnamen. Dabei werden die Funktionsaufrufe von oben nach unten aufgelistet, sodass in der letzten Zeile der Code steht, der schlussendlich zur Ausnahme geführt hat und somit ein guter Startpunkt der Fehlersuche ist.

Durch die Kombination von Python Try Except mit den Exception – Tracebacks bietet Python eine gute Basis zur Fehlersuche im Programmiercode. Der Traceback beginnt mit dem Dateipfad in dem es zum Fehler kam. Vor allem bei komplexeren Projekten kann dies sinnvoll sein, wenn Module aus anderen Dateien importiert werden. Die zweite Information ist die Zeilennummer in der Datei, die nicht mehr ausgeführt werden konnte und zum Fehler geführt hat. Die letzte Information in dieser Zeile ist dann der Funktionsaufruf, der in dieser Zeile genannt wurde. Je nach Aufruf kann es auch mehrere Tracebacks geben, wenn die Funktion geschachtelt ist und mehrere Aufrufe getriggert hat. In der letzten Zeile des Tracebacks steht dann der Fehlertyp und die Fehlerbeschreibung.

Das solltest Du mitnehmen

  • Python Try Except ist eine Möglichkeit sogenannte Ausnahmen (engl.: Exceptions) in Python Programmen zu handhaben, damit die Anwendung nicht abstürzt.
  • Mit dem Try Block werden die Zeilen umschlossen, die potenziell zu Exceptions führen könnten. Im Except Block hingegen wird der Code definiert, der im Fehlerfall ausgeführt werden soll. Wenn es zu keiner Ausnahme kommt, wird einfach der Code nach der Python Try Except Schleife ausgeführt.
  • Zusätzlich kann man mit dem Befehl “finally” definieren, was passieren soll, wenn es im Try Block zu keinem Fehler kommt.

Vielen Dank an Deepnote für das Sponsoring dieses Artikels! Deepnote bietet mir die Möglichkeit, Python-Code einfach und schnell auf dieser Website einzubetten und auch die zugehörigen Notebooks in der Cloud zu hosten.

Python Input / Python Output

Was sind Python Inputs und Outputs?

Python Inputs und Outputs beherrschen: Erforschen Sie Eingaben, Ausgaben und den Umgang mit Dateien in der Python-Programmierung.

Python Excel; Python CSV

Wie kannst Du mit Python Excel / CSV Dateien bearbeiten?

In diesem Artikel werden Möglichkeiten aufgezeigt, um mit Python Excel- und CSV-Dateien öffnen, bearbeiten und schreiben zu können.

Python File Handling / Python Dateiverarbeitung

Wie funktioniert die Python Dateiverarbeitung?

Nutzen Sie die Möglichkeiten der Python Dateiverarbeitung mit unserem Artikel. Lernen Sie, Dateien effizient zu schreiben und zu navigieren.

Python Loops

Was sind Python Loops?

Beherrsche Python Loops: Lerne `for` und `while` Iterationen, Steueranweisungen und praktische Anwendungen in diesem Leitfaden kennen.

Classes and Objects in Python / Klassen und Objekte in Python

Klassen und Objekte in Python – einfach erklärt!

Objektorientierte Programmierung in Python beherrschen: Erforschen Sie Klassen, Objekte und Interaktionen in unserem informativen Artikel!

Threading and Multiprocessing in Python.

Was ist Threading und Multiprocessing in Python?

Steigern Sie die Leistung von Python mit Threading und Multiprocessing. Lernen Sie, wie Sie die Parallelverarbeitung nutzen können.

Andere Beiträge zum Thema Python Try Except

  • Bei w3schools findest Du einen ausführlichen Beitrag zu Python Try Except.
Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Schlagwörter:
Cookie Consent mit Real Cookie Banner