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.
