Python Ausnahmebehandlung: try, catch, finally und raise [Beispiel]
Was ist eine Ausnahmebehandlung in Python?
Eine Ausnahme ist ein Fehler, der während der Ausführung eines Programms auftritt. Während der Ausführung eines Programms Python erzeugt eine Ausnahme, die behandelt werden sollte, um einen Programmabsturz zu vermeiden. Python Sprache, Ausnahmen werden bei Fehlern automatisch ausgelöst oder können von Ihrem Code ausgelöst und abgefangen werden.
Die Ausnahme weist darauf hin, dass das Ereignis zwar auftreten kann, diese Art von Ereignis jedoch selten auftritt. Wenn die Methode die Ausnahme nicht verarbeiten kann, wird sie an ihre Aufruferfunktion weitergeleitet. Wenn schließlich eine Ausnahme aus der Hauptfunktion ausgelöst wird, wird das Programm abrupt beendet.
Häufige Beispiele für Ausnahmen
- Durch Null teilen
- Zugriff auf eine Datei, die nicht existiert.
- Hinzufügung zweier inkompatibler Typen
- Es wird versucht, auf einen nicht vorhandenen Index einer Sequenz zuzugreifen
- Entfernen der Tabelle vom getrennten Datenbankserver.
- Abhebung am Geldautomaten von mehr als dem verfügbaren Betrag
Warum sollten Sie Ausnahmen verwenden?
Hier sind die Gründe für die Verwendung von Ausnahmen in Python:
- Mit der Ausnahmebehandlung können Sie Fehlerbehandlungscode vom normalen Code trennen.
- Eine Ausnahme ist a Python Objekt was einen Fehler darstellt.
- Wie bei Codekommentaren helfen Ihnen Ausnahmen dabei, sich daran zu erinnern, was das Programm erwartet.
- Es verdeutlicht den Code und verbessert die Lesbarkeit.
- Ermöglicht die Anregung von Konsequenzen, da die Fehlerbehandlung an einem Ort und auf eine Art und Weise erfolgt.
- Eine Ausnahme ist eine praktische Methode zur Behandlung von Fehlermeldungen.
- In Pythonkönnen Sie im Programm eine Ausnahme auslösen, indem Sie die Methode „raise exception“ verwenden.
- Durch das Auslösen einer Ausnahme können Sie die aktuelle Codeausführung unterbrechen und die Ausnahme wieder in den erwarteten Zustand zurückversetzen, bis sie behandelt wird.
- Verarbeitung von Ausnahmen für Komponenten, die diese nicht direkt verarbeiten können.
Ausnahmeregeln
Hier sind einige grundlegende Regeln für Python Ausnahmebehandlung:
- Ausnahmen müssen Klassenobjekte sein
- Für Klassenausnahmen können Sie die Try-Anweisung mit einer Ausnahmeklausel verwenden, die eine bestimmte Klasse erwähnt.
- Auch wenn eine Anweisung oder ein Ausdruck syntaktisch korrekt ist, kann beim Versuch, sie auszuführen, ein Fehler angezeigt werden.
- Während der Ausführung gefundene Fehler werden als Ausnahmen bezeichnet und sind nicht unbedingt schwerwiegend.
Python Ausnahmebehandlungsmechanismus
Die Ausnahmebehandlung wird durch die folgenden 5 Schlüsselwörter verwaltet:
- versuchen
- Fang
- endlich
- werfen
Python Try-Anweisung
Eine try-Anweisung enthält das Schlüsselwort try, gefolgt von einem Doppelpunkt (:) und einer Codefolge, in der Ausnahmen auftreten können. Es enthält eine oder mehrere Klauseln.
Wenn während der Ausführung der try-Anweisung keine Ausnahmen aufgetreten sind, ignoriert der Interpreter die Ausnahmehandler für diese bestimmte try-Anweisung.
Falls in einer Try-Suite eine Ausnahme auftritt, läuft die Try-Suite ab und die Programmsteuerung wird an den passenden Except-Handler übertragen, der der Try-Suite folgt.
Syntax: try: statement(s)
Die Catch-Anweisung
Catch-Blöcke nehmen jeweils ein Argument an, das ist die Art von Ausnahme, die sie wahrscheinlich abfangen. Diese Argumente können von einem bestimmten Ausnahmetyp, der variiert werden kann, bis hin zu einer Sammelkategorie von Ausnahmen reichen.
Regeln für Catch-Block:
- Sie können einen Catch-Block definieren, indem Sie das Schlüsselwort Catch verwenden
- Der Parameter „Catch Exception“ wird immer in Klammern eingeschlossen
- Es stellt immer den Ausnahmetyp dar, den der Catch-Block behandelt.
- Ein Ausnahmebehandlungscode wird zwischen zwei geschweiften Klammern {} geschrieben.
- Sie können mehrere Catch-Blöcke in einem einzigen Try-Block platzieren.
- Sie können einen Catch-Block nur nach dem Try-Block verwenden.
- Der gesamte Catch-Block sollte von der Unterklasse zur Superklasse-Ausnahme geordnet werden.
Ejemplo:
try } catch (ArrayIndexOutOfBoundsException e) { System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) { System.err.printin("Caught second " + e.getMessage()); }
Finally-Anweisung in Python
Schließlich wird der Block immer ausgeführt, unabhängig davon, ob eine Ausnahme ausgelöst wird oder nicht. Mit dem letzten Schlüsselwort können Sie einen Codeblock erstellen, der auf einen Try-Catch-Block folgt.
Schließlich ist die Klausel optional. Ziel ist es, Bereinigungsaktionen zu definieren, die unter allen Bedingungen ausgeführt werden sollten.
try: raise KeyboardInterrupt finally: print 'welcome, world!' Output Welcome, world! KeyboardInterrupt
Schließlich wird die Klausel vor der try-Anweisung ausgeführt.
Raise-Anweisung in Python
Die raise-Anweisung gibt ein Argument an, das das Ausnahmeobjekt initialisiert. Hier folgt ein Komma auf den Ausnahmenamen und ein Argument oder Tupel des Arguments, das auf das Komma folgt.
Syntax:
raise [Exception [, args [, traceback]]]
In dieser Syntax ist das Argument optional und zum Zeitpunkt der Ausführung ist der Wert des Ausnahmearguments immer „none“.
Ejemplo:
A Python Ausnahme kann ein beliebiger Wert sein, z. B. ein String, eine Klasse, eine Zahl oder ein Objekt. Die meisten dieser Ausnahmen, die ausgelöst werden durch Python Kern sind Klassen mit einem Argument, das eine Instanz der Klasse ist.
Wichtig Python Fehler
Fehlertyp | Beschreibung |
---|---|
ArithmeticError | ArithmeticError fungiert als Basisklasse für alle arithmetischen Ausnahmen. Es wird bei Fehlern in arithmetischen Operationen ausgelöst. |
Importfehler | ImportError wird ausgelöst, wenn Sie versuchen, ein Modul zu importieren, das nicht vorhanden ist. Diese Art von Ausnahme tritt auf, wenn Sie einen Tippfehler beim Modulnamen gemacht haben oder das Modul nicht im Standardpfad vorhanden ist. |
IndexFehler | Ein IndexErro wird ausgelöst, wenn Sie versuchen, auf eine Sequenz zu verweisen, die außerhalb des gültigen Bereichs liegt. |
Schlüsselfehler | Wenn ein bestimmter Schlüssel nicht in einem Wörterbuch gefunden wird, wird eine KeyError-Ausnahme ausgelöst. |
NameFehler | Ein NameError wird ausgelöst, wenn in Code auf einen Namen verwiesen wird, der niemals im lokalen oder globalen Namespace vorhanden ist. |
WertFehler | Ein Wertfehler wird ausgelöst, wenn eine Funktion oder ein integrierter Vorgang ein Argument empfängt, das zwar vom richtigen Typ sein kann, aber keinen geeigneten Wert hat. |
EOFerror | Diese Art von Fehler tritt auf, wenn eine der integrierten Funktionen (input() oder raw_input()) eine EOF-Bedingung erreicht, ohne Daten zu lesen. |
ZeroDivisonError | Diese Art von Fehler wird bei allen numerischen Typen ausgelöst, wenn eine Division oder ein Modul durch Null erfolgt. |
IOError- | Diese Art von Fehler wird ausgelöst, wenn ein Eingabe-/Ausgabevorgang fehlschlägt. |
Syntax-Fehler | SyntaxErrors wird ausgelöst, wenn ein Fehler auftritt in Python Syntax. |
Einrückungsfehler | Dieser Fehler wird ausgelöst, wenn die Einrückung nicht richtig definiert ist |
Weitere wichtige Python Ausnahmen
Exception | Beschreibung |
---|---|
Arithmetische Ausnahme | Arithmetischer Fehler, z. B. Division durch Null. |
ArraylndexOutOfBoundsException | Der Array-Index liegt außerhalb des zulässigen Bereichs. |
ArrayStoreException | Die Zuweisung hilft Ihnen beim Array-Element eines inkompatiblen Typs. |
ClassCastException | Ungültige Besetzung |
MlegalMonitorStateException | Unzulässiger Monitorvorgang, beispielsweise das Warten auf einen nicht blockierten Thread. |
MlegalStateException | Umgebung oder Anwendung ist im falschen Zustand. |
ClassNotFoundException | Klasse nicht gefunden. |
CloneNotSupportedException | Versuchen Sie, ein Objekt zu klonen, das die klonbare Schnittstelle nicht implementiert. |
Unzulässige AccessException | Der Zugriff auf eine Klasse wird verweigert. |
InstantiationException | Tritt auf, wenn Sie versuchen, ein Objekt einer Schnittstelle oder einer abstrakten Klasse zu erstellen. |
CloneNotSupportedException | Versuchen Sie, ein Objekt zu klonen, das die Schnittstelle nicht implementiert. |
Fehler vs. Ausnahmen
Fehler | Ausnahmen |
---|---|
Alle Fehler in Python sind vom ungeprüften Typ. | Ausnahmen umfassen sowohl aktivierte als auch nicht aktivierte Typen. |
Zur Laufzeit treten Fehler auf, die dem Compiler unbekannt sind. | Ausnahmen können behoben werden, indem sie mithilfe von Try-Catch-Blöcken behandelt werden. |
Fehler werden meist durch die Umgebung verursacht, in der eine Anwendung ausgeführt wird. | Die Anwendung selbst verursacht Ausnahmen. |
Beispiele: Außerhalb des Speicherfehler |
Beispiele: Geprüfte Ausnahmen, SQL-Ausnahme, NullPointerException usw. |
Zusammenfassung
- Eine Ausnahme ist ein Fehler, der während der Ausführung eines Programms aufgetreten ist.
- Die Ausnahme weist darauf hin, dass das Ereignis zwar auftreten kann, diese Art von Ereignis jedoch selten auftritt.
- Häufige Beispiele für Ausnahmen sind 1) Division durch Null, 2) Zugriff auf eine nicht vorhandene Datei, 3) Hinzufügung zweier inkompatibler Typen.
- Eine Ausnahme ist a Python Objekt, das einen Fehler darstellt.
- Eine try-Anweisung enthält das Schlüsselwort try, gefolgt von einem Doppelpunkt (:) und einer Codefolge, in der Ausnahmen auftreten können. Es enthält eine oder mehrere Klauseln.
- Catch-Blöcke nehmen jeweils ein Argument an, das ist die Art von Ausnahme, die sie wahrscheinlich abfangen.
- Die raise-Anweisung gibt ein Argument an, das das Ausnahmeobjekt initialisiert.
- Schließlich wird der Block immer ausgeführt, unabhängig davon, ob eine Ausnahme ausgelöst wird oder nicht.