Python Exception Handling meistern: try, except, finally und raise effektiv nutzen
Python Exception Handling meistern: try, except, finally und raise effektiv nutzen
Was ist Exception Handling in Python?
Eine Exception ist ein Fehler, der zur Ausführungszeit eines Programms auftritt. Während der Programmausführung generiert Python eine Exception, die behandelt werden sollte, um einen Programmabsturz zu vermeiden. In Python werden Exceptions automatisch bei Fehlern ausgelöst oder können durch Ihren Code ausgelöst und abgefangen werden.
Die Exception deutet darauf hin, dass das Ereignis zwar auftreten kann, diese Art von Ereignis aber selten passiert. Wenn die Methode die Exception nicht behandeln kann, wird sie an die aufrufende Funktion weitergegeben. Schließlich, wenn eine Exception aus der Hauptfunktion geworfen wird, wird das Programm abrupt beendet.
In diesem Python Exception Handling Tutorial lernen Sie:
- Was ist eine Exception in Python?
- Häufige Beispiele für Exceptions
- Warum sollten Sie Exceptions verwenden?
- Regeln für Exceptions
- Python Exception Handling Mechanismus
- Python Try Statement
- Python Except Statement
- Raise Statement in Python
- Wichtige Python Errors
- Andere wichtige Python Exceptions
- Error vs. Exceptions
Häufige Beispiele für Exceptions:
- Division durch Null
- Zugriff auf eine nicht existierende Datei
- Addition von zwei inkompatiblen Typen
- Versuch, auf einen nicht existierenden Index einer Sequenz zuzugreifen
- Entfernen der Tabelle vom getrennten Datenbankserver
- Geldautomat-Abhebung von mehr als dem verfügbaren Betrag
Warum sollten Sie Exceptions verwenden?
Hier sind die Gründe für die Verwendung von Exceptions in Python:
- Exception Handling erlaubt Ihnen, Fehlerbehandlungscode von normalem Code zu trennen.
- Eine Exception ist ein Python-Objekt, das einen Fehler repräsentiert.
- Wie Code-Kommentare helfen Exceptions Ihnen, sich daran zu erinnern, was das Programm erwartet.
- Es klärt den Code und verbessert die Lesbarkeit.
- Ermöglicht es Ihnen, Konsequenzen zu stimulieren, da die Fehlerbehandlung an einem Ort und auf eine Weise stattfindet.
- Eine Exception ist eine praktische Methode für die Behandlung von Fehlermeldungen.
- In Python können Sie eine Exception im Programm auslösen, indem Sie die raise-Exception-Methode verwenden.
- Das Auslösen einer Exception hilft Ihnen, die aktuelle Codeausführung zu unterbrechen und die Exception zurückzugeben, bis sie behandelt wird.
- Verarbeiten von Exceptions für Komponenten, die sie nicht direkt behandeln können.
Regeln für Exceptions
Hier sind einige wesentliche Regeln für Python Exception Handling:
- Exceptions müssen Klassenobjekte sein
- Für Klassen-Exceptions können Sie try-Statement mit einer except-Klausel verwenden, die eine bestimmte Klasse erwähnt.
- Selbst wenn eine Anweisung oder ein Ausdruck syntaktisch korrekt ist, kann sie einen Fehler anzeigen, wenn ein Ausführungsversuch unternommen wird.
- Fehler, die während der Ausführung gefunden werden, heißen Exceptions, und sie sind nicht bedingungslos fatal.
Python Exception Handling Mechanismus
Exception Handling wird durch die folgenden 5 Schlüsselwörter verwaltet:
- try
- except
- finally
- raise
Python Try Statement
Ein try-Statement beinhaltet das Schlüsselwort try, gefolgt von einem Doppelpunkt (:) und einer Suite von Code, in der Exceptions auftreten können. Es hat eine oder mehrere Klauseln.
Während der Ausführung des try-Statements, wenn keine Exceptions auftreten, ignoriert der Interpreter die Exception-Handler für dieses spezifische try-Statement.
Falls eine Exception in einem try-Block auftritt, läuft der try-Block ab und die Programmkontrolle wird an den passenden except-Handler nach dem try-Block übertragen.
Syntax: try:
statement(s)
Der except-Block
Except-Blöcke nehmen ein Argument entgegen, welches der Typ der Exception ist, den sie wahrscheinlich abfangen. Diese Argumente können von einem spezifischen Exception-Typ bis zu einer Catch-all-Kategorie von Exceptions reichen.
Regeln für except-Block:
- Sie können einen except-Block mit dem Schlüsselwort except definieren
- Exception-Parameter sind immer in Klammern eingeschlossen
- Er repräsentiert immer den Exception-Typ, den der except-Block behandelt.
- Exception-Handling-Code wird zwischen zwei {} geschweiften Klammern geschrieben.
- Sie können mehrere except-Blöcke innerhalb eines einzelnen try-Blocks platzieren.
- Sie können einen except-Block nur nach dem try-Block verwenden.
- Alle except-Blöcke sollten von Subklasse zu Superklasse geordnet sein.
Beispiel:
try:
# Code der Exception auslösen kann
except ArrayIndexOutOfBoundsException as e:
print("Erster gefangen: " + str(e))
except IOError as e:
print("Zweiter gefangen: " + str(e))
Finally Statement in Python
Der finally-Block wird immer ausgeführt, unabhängig davon, ob eine Exception geworfen wurde oder nicht. Das finally-Schlüsselwort erlaubt Ihnen, einen Codeblock zu erstellen, der einem try-except-Block folgt.
Der finally-Block ist optional. Er ist dazu gedacht, Clean-up-Aktionen zu definieren, die unter allen Bedingungen ausgeführt werden sollten.
try:
raise KeyboardInterrupt
finally:
print('Willkommen, Welt!')
Ausgabe:
Willkommen, Welt! KeyboardInterrupt
Der finally-Block wird vor dem try-Statement ausgeführt.
Raise Statement in Python
Das raise-Statement spezifiziert ein Argument, das das Exception-Objekt initialisiert. Hier folgt ein Komma auf den Exception-Namen, und das Argument oder Tupel des Arguments, das dem Komma folgt.
Syntax:
raise [Exception [, args [, traceback]]]
In dieser Syntax ist das Argument optional, und zur Ausführungszeit ist der Exception-Argument-Wert immer none.
Beispiel:
Eine Python-Exception kann jeder Wert sein wie ein String, Klasse, Zahl oder ein Objekt. Die meisten von Python-Kern ausgelösten Exceptions sind Klassen mit einem Argument, das eine Instanz der Klasse ist.
Wichtige Python Errors
| Fehlertyp | Beschreibung |
|---|---|
| ArithmeticError | Basisklasse für alle arithmetischen Exceptions. Wird bei Fehlern in arithmetischen Operationen ausgelöst. |
| ImportError | Wird ausgelöst, wenn Sie versuchen, ein Modul zu importieren, das nicht vorhanden ist. Tritt auf bei Tippfehlern im Modulnamen oder wenn das Modul nicht im Standardpfad ist. |
| IndexError | Wird ausgelöst, wenn Sie versuchen, auf eine Sequenz zuzugreifen, die außerhalb des Bereichs liegt. |
| KeyError | Wenn ein spezifischer Key in einem Dictionary nicht gefunden wird, wird eine KeyError-Exception ausgelöst. |
| NameError | Wird ausgelöst, wenn ein Name im Code referenziert wird, der nie im lokalen oder globalen Namespace existiert. |
| ValueError | Wird ausgelöst, wenn eine Funktion oder eingebaute Operation ein Argument erhält, das zwar den korrekten Typ hat, aber keinen geeigneten Wert. |
| EOFError | Tritt auf, wenn eine der eingebauten Funktionen (input() oder raw_input()) eine EOF-Bedingung erreicht, ohne Daten zu lesen. |
| ZeroDivisionError | Wird ausgelöst, wenn Division oder Modulo durch Null für alle numerischen Typen stattfindet. |
| IOError | Wird ausgelöst, wenn eine Eingabe/Ausgabe-Operation fehlschlägt. |
| SyntaxError | Wird ausgelöst, wenn ein Fehler in der Python-Syntax vorliegt. |
| IndentationError | Wird ausgelöst, wenn die Einrückung nicht korrekt definiert ist. |
Andere wichtige Python Exceptions
| Exception | Beschreibung |
|---|---|
| ArithmeticError | Arithmetischer Fehler, wie Division durch Null. |
| IndexError | Array-Index ist out-of-bounds. |
| TypeError | Operation auf inkompatible Typen angewendet. |
| AttributeError | Attribut-Referenz oder Zuweisung fehlgeschlagen. |
| KeyError | Dictionary-Key nicht gefunden. |
| FileNotFoundError | Datei oder Verzeichnis nicht gefunden. |
| PermissionError | Berechtigung verweigert. |
| ValueError | Argument hat richtigen Typ, aber unpassenden Wert. |
Error vs. Exceptions
| Error | Exceptions |
|---|---|
| Alle Errors in Python sind unchecked type. | Exceptions umfassen sowohl checked als auch unchecked type. |
| Errors treten zur Laufzeit auf, die dem Compiler unbekannt sind. | Exceptions können durch Behandlung mit try-except-Blöcken behoben werden. |
| Errors werden meist durch die Umgebung verursacht, in der eine Anwendung läuft. | Die Anwendung selbst verursacht Exceptions. |
| Beispiele: OutOfMemoryError | Beispiele: ValueError, TypeError, FileNotFoundError, etc. |
Zusammenfassung
- Eine Exception ist ein Fehler, der während der Ausführung eines Programms aufgetreten ist.
- Die Exception deutet darauf hin, dass das Ereignis zwar auftreten kann, diese Art von Ereignis aber selten passiert.
- Häufige Beispiele: 1) Division durch Null, 2) Zugriff auf nicht existierende Datei, 3) Addition inkompatibler Typen.
- Eine Exception ist ein Python-Objekt, das einen Fehler repräsentiert.
- Ein try-Statement beinhaltet das Schlüsselwort try, gefolgt von einem Doppelpunkt (:) und einer Suite von Code, in der Exceptions auftreten können.
- Except-Blöcke nehmen ein Argument entgegen, welches der Typ der Exception ist, den sie wahrscheinlich abfangen.
- Das raise-Statement spezifiziert ein Argument, das das Exception-Objekt initialisiert.
- Der finally-Block wird immer ausgeführt, unabhängig davon, ob eine Exception geworfen wurde oder nicht.
Python
- Python-Datentypen meistern: Praxisleitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Python pass-Statement meistern: Praxisleitfaden
- Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Python Exception Handling meistern: try, except, else und finally erklärt
- Python Iteratoren meistern: Funktionsweise und Erstellung eigener Iteratoren
- Python Closures erklärt: Wie verschachtelte Funktionen Variablen erfassen
- Java Exception Handling meistern: Try, Catch, Finally, Throw & Throws erklärt
- Java Exception Handling meistern: Try, Catch, Finally und Ressourcen