Python-Ausnahmebehandlung:Try, Catch, Final &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 generiert Python jedoch eine Ausnahme, die behandelt werden sollte, um einen Absturz Ihres Programms zu vermeiden. In der Python-Sprache werden Ausnahmen automatisch bei Fehlern ausgelöst, oder sie können von Ihrem Code ausgelöst und abgefangen werden.
Die Ausnahme gibt an, 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 aufrufende Funktion geworfen. Wenn schließlich eine Ausnahme von der Hauptfunktion ausgelöst wird, wird das Programm abrupt beendet.
In diesem Tutorial zur außergewöhnlichen Handhabung von Python lernen Sie :
- Was ist eine Ausnahme in Python?
- Häufige Beispiele für Ausnahmen
- Warum sollten Sie Ausnahmen verwenden?
- Ausnahmeregelung
- Python-Ausnahmebehandlungsmechanismus
- Python-Try-Anweisung
- Python-Catch-Anweisung
- Raise-Anweisung in Python
- Wichtige Python-Fehler
- Andere wichtige Python-Ausnahmen
- Fehler vs. Ausnahmen
Häufige Beispiele für Ausnahmen:
- Division durch Null
- Zugriff auf eine Datei, die nicht existiert.
- Hinzufügen von zwei inkompatiblen Typen
- Versuch, auf einen nicht existierenden Index einer Sequenz zuzugreifen
- Entfernen der Tabelle vom getrennten Datenbankserver.
- Geldautomatenabhebung 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:
- Ausnahmebehandlung ermöglicht es Ihnen, Fehlerbehandlungscode von normalem Code zu trennen.
- Eine Ausnahme ist ein Python-Objekt, das 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 es Ihnen, Konsequenzen anzuregen, da die Fehlerbehandlung an einem Ort und auf eine Weise stattfindet.
- Eine Ausnahme ist eine bequeme Methode zum Umgang mit Fehlermeldungen.
- In Python können Sie eine Ausnahme im Programm auslösen, indem Sie die Methode raise exception verwenden.
- Das Auslösen einer Ausnahme hilft Ihnen, die aktuelle Codeausführung zu unterbrechen, und bringt die Ausnahme wieder in den erwarteten Zustand zurück, bis sie behandelt wird.
- Verarbeitung von Ausnahmen für Komponenten, die sie nicht direkt verarbeiten können.
Ausnahmeregeln
Hier sind einige grundlegende Regeln der Python-Ausnahmebehandlung:
- Ausnahmen müssen Klassenobjekte sein
- Für Klassenausnahmen können Sie eine try-Anweisung mit einer Except-Klausel verwenden, die eine bestimmte Klasse erwähnt.
- Auch wenn eine Anweisung oder ein Ausdruck syntaktisch korrekt ist, kann es sein, dass beim Versuch, sie auszuführen, ein Fehler angezeigt wird.
- 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
- fangen
- endlich
- werfen
Python Try-Anweisung
Eine try-Anweisung enthält das Schlüsselwort try, gefolgt von einem Doppelpunkt (:) und einer Reihe von Codes, in denen Ausnahmen auftreten können. Es hat eine oder mehrere Klauseln.
Wenn während der Ausführung der try-Anweisung keine Ausnahmen aufgetreten sind, ignoriert der Interpreter die Ausnahmebehandlungsroutinen für diese spezifische try-Anweisung.
Falls eine Ausnahme in einer Try-Suite auftritt, läuft die Try-Suite ab und die Programmsteuerung wird an den übereinstimmenden Except-Handler übertragen, der der Try-Suite folgt.
Syntax: try: statement(s)
Die catch-Anweisung
Catch-Blöcke akzeptieren jeweils ein Argument, was die Art von Ausnahme ist, die wahrscheinlich abgefangen wird. Diese Argumente können von einem bestimmten Ausnahmetyp, der variiert werden kann, bis zu einer Catch-all-Kategorie von Ausnahmen reichen.
Regeln für catch-Block:
- Sie können einen Catch-Block definieren, indem Sie das Schlüsselwort catch verwenden
- Catch-Ausnahmeparameter ist immer in Klammern eingeschlossen
- Es stellt immer den Ausnahmetyp dar, der Block-Handles abfängt.
- Ein Ausnahmebehandlungscode wird zwischen zwei {} geschweiften Klammern geschrieben.
- Sie können mehrere catch-Blöcke in einem einzigen try-Block platzieren.
- Du kannst einen catch-Block nur nach dem try-Block verwenden.
- Der gesamte Catch-Block sollte von der Ausnahme der Unterklasse zur Oberklasse geordnet werden.
Beispiel:
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 Schlüsselwort final können Sie einen Codeblock erstellen, der auf einen try-catch-Block folgt.
Schließlich ist die Klausel optional. Es ist beabsichtigt, Aufräumaktionen 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.
Beispiel:
Eine Python-Ausnahme kann ein beliebiger Wert wie eine Zeichenfolge, Klasse, Zahl oder ein Objekt sein. Die meisten dieser Ausnahmen, die vom Python-Kern ausgelöst werden, sind Klassen mit einem Argument, das eine Instanz der Klasse ist.
Wichtige Python-Fehler
Fehlertyp | Beschreibung |
---|---|
Arithmetikfehler | 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 im Modulnamen gemacht haben oder das Modul nicht im Standardpfad vorhanden ist. |
IndexFehler | Ein IndexErroris wird ausgelöst, wenn Sie versuchen, auf eine Sequenz zu verweisen, die außerhalb des zulässigen Bereichs liegt. |
Schlüsselfehler | Wenn ein bestimmter Schlüssel nicht in einem Wörterbuch gefunden wird, wird eine KeyError-Ausnahme ausgelöst. |
Namensfehler | Ein NameError wird ausgelöst, wenn in Code auf einen Namen verwiesen wird, der niemals im lokalen oder globalen Namespace existiert. |
WertFehler | Wertfehler wird ausgelöst, wenn eine Funktion oder eingebaute Operation ein Argument empfängt, das vom richtigen Typ sein kann, aber keinen geeigneten Wert hat. |
EOF-Fehler | Diese Art von Fehler tritt auf, wenn eine der eingebauten Funktionen (input() oder raw_input()) eine EOF-Bedingung erreicht, ohne Daten zu lesen. |
ZeroDivisonError | Diese Art von Fehler wird ausgelöst, wenn für alle numerischen Typen eine Division oder ein Modul durch Null stattfindet. |
IOError- | Diese Art von Fehler wird ausgelöst, wenn eine Ein-/Ausgabeoperation fehlschlägt. |
syntaxFehler | SyntaxErrors, die ausgelöst werden, wenn ein Fehler in der Python-Syntax vorliegt. |
Einrückungsfehler | Dieser Fehler wird ausgelöst, wenn die Einrückung nicht richtig definiert ist |
Andere wichtige Python-Ausnahmen
Ausnahme | Beschreibung |
---|---|
Arithmetische Ausnahme | Arithmetischer Fehler, z. B. Division durch Null. |
ArrayIndexOutOfBoundsException | Array-Index ist außerhalb der Grenzen. |
ArrayStoreException | Zuweisung hilft Ihnen, das Array-Element eines inkompatiblen Typs zu verwenden. |
ClassCastException | Ungültige Umwandlung |
MlegalMonitorStateException | Illegaler Überwachungsvorgang, wie das Warten auf einen nicht gesperrten Thread. |
MlegalStateException | Umgebung oder Anwendung ist im falschen Zustand. |
ClassNotFoundException | Klasse nicht gefunden. |
CloneNotSupportedException | Versuch, ein Objekt zu klonen, das die Cloneable-Schnittstelle nicht implementiert. |
Illegal AccessException | Zugriff auf eine Klasse verweigert. |
Instanziierungsausnahme | Tritt auf, wenn Sie versuchen, ein Objekt einer Schnittstelle oder abstrakten Klasse zu erstellen. |
CloneNotSupportedException | Versuch, 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 mit Hilfe von Try-Catch-Blöcken behandelt werden. |
Fehler werden meistens durch die Umgebung verursacht, in der eine Anwendung ausgeführt wird. | Die Anwendung selbst verursacht Ausnahmen. |
Beispiele: OutofMemoryError | Beispiele: Überprüfte Ausnahmen, SQL-Ausnahme, NullPointerException usw. |
Zusammenfassung
- Eine Ausnahme ist ein Fehler, der während der Ausführung eines Programms aufgetreten ist.
- Die Ausnahme gibt an, dass das Ereignis zwar auftreten kann, aber selten auftritt.
- Häufige Beispiele für Ausnahmen sind 1) Division durch Null, 2) Zugriff auf eine Datei, die nicht existiert, 3) Hinzufügung von zwei inkompatiblen Typen.
- Eine Ausnahme ist ein Python-Objekt, das einen Fehler darstellt.
- Eine try-Anweisung enthält das Schlüsselwort try, gefolgt von einem Doppelpunkt (:) und einer Reihe von Codes, in denen Ausnahmen auftreten können. Es hat eine oder mehrere Klauseln.
- Catch-Blöcke akzeptieren jeweils ein Argument, was die Art von Ausnahme ist, die wahrscheinlich abgefangen wird.
- Die Raise-Anweisung spezifiziert ein Argument, das das Ausnahmeobjekt initialisiert.
- Schließlich wird Block immer ausgeführt, unabhängig davon, ob eine Ausnahme ausgelöst wird oder nicht.
Python