In diesem Tutorial lernen Sie verschiedene Arten von Fehlern und Ausnahmen kennen, die in Python integriert sind. Sie werden immer dann ausgelöst, wenn der Python-Interpreter auf Fehler stößt.
Video: Python-Ausnahmebehandlung
Wir können beim Schreiben eines Programms bestimmte Fehler machen, die zu Fehlern führen, wenn wir versuchen, es auszuführen. Ein Python-Programm wird beendet, sobald ein nicht behandelter Fehler auftritt. Diese Fehler können grob in zwei Klassen eingeteilt werden:
- Syntaxfehler
- Logische Fehler (Ausnahmen)
Python-Syntaxfehler
Ein Fehler, der dadurch verursacht wird, dass die richtige Struktur (Syntax) der Sprache nicht eingehalten wird, wird als Syntaxfehler oder Analysefehler bezeichnet .
Schauen wir uns ein Beispiel an:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
Wie im Beispiel gezeigt, zeigt ein Pfeil an, wo der Parser auf den Syntaxfehler gestoßen ist.
Wir können hier feststellen, dass ein Doppelpunkt :
in der if
Anweisung fehlt .
Python Logical Errors (Ausnahmen)
Fehler, die zur Laufzeit (nach Bestehen des Syntaxtests) auftreten, werden als Ausnahmen oder logische Fehler bezeichnet .
Sie treten beispielsweise auf, wenn wir versuchen, eine nicht vorhandene Datei (zum Lesen) zu öffnen ( FileNotFoundError
), eine Zahl durch Null zu teilen ( ZeroDivisionError
) oder ein nicht vorhandenes Modul zu importieren ( ImportError
).
Immer wenn diese Arten von Laufzeitfehlern auftreten, erstellt Python ein Ausnahmeobjekt. Wenn dies nicht richtig gehandhabt wird, wird ein Traceback zu diesem Fehler zusammen mit einigen Details darüber ausgegeben, warum dieser Fehler aufgetreten ist.
Schauen wir uns an, wie Python diese Fehler behandelt:
>>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'
Integrierte Python-Ausnahmen
Illegale Operationen können Ausnahmen auslösen. In Python gibt es viele integrierte Ausnahmen, die ausgelöst werden, wenn entsprechende Fehler auftreten. Mit der integrierten local()
Funktion können wir alle integrierten Ausnahmen wie folgt anzeigen :
print(dir(locals()('__builtins__')))
locals()('__builtins__')
gibt ein Modul mit integrierten Ausnahmen, Funktionen und Attributen zurück. dir
ermöglicht es uns, diese Attribute als Zeichenfolgen aufzulisten.
Einige der häufigsten integrierten Ausnahmen in der Python-Programmierung sowie der Fehler, der sie verursacht, sind nachstehend aufgeführt:
Ausnahme | Fehlerursache |
---|---|
AssertionError | Wird ausgelöst, wenn eine assert Anweisung fehlschlägt. |
AttributeError | Wird ausgelöst, wenn die Attributzuweisung oder Referenz fehlschlägt. |
EOFError | Wird ausgelöst, wenn die input() Funktion den Dateiendezustand erreicht. |
FloatingPointError | Wird ausgelöst, wenn eine Gleitkommaoperation fehlschlägt. |
GeneratorExit | Erhöhen Sie, wenn die close() Methode eines Generators aufgerufen wird. |
ImportError | Wird ausgelöst, wenn das importierte Modul nicht gefunden wird. |
IndexError | Wird ausgelöst, wenn der Index einer Sequenz außerhalb des Bereichs liegt. |
KeyError | Wird ausgelöst, wenn ein Schlüssel in einem Wörterbuch nicht gefunden wird. |
KeyboardInterrupt | Wird ausgelöst, wenn der Benutzer die Interrupt-Taste ( Ctrl+C oder Delete ) drückt . |
MemoryError | Wird ausgelöst, wenn eine Operation nicht genügend Speicher hat. |
NameError | Wird ausgelöst, wenn eine Variable nicht im lokalen oder globalen Bereich gefunden wird. |
NotImplementedError | Mit abstrakten Methoden erzogen. |
OSError | Wird ausgelöst, wenn der Systembetrieb einen systembezogenen Fehler verursacht. |
OverflowError | Wird ausgelöst, wenn das Ergebnis einer arithmetischen Operation zu groß ist, um dargestellt zu werden. |
ReferenceError | Wird ausgelöst, wenn ein schwacher Referenz-Proxy verwendet wird, um auf einen durch Müll gesammelten Referenz zuzugreifen. |
RuntimeError | Wird ausgelöst, wenn ein Fehler nicht in eine andere Kategorie fällt. |
StopIteration | Wird durch die next() Funktion ausgelöst, um anzuzeigen, dass vom Iterator kein weiteres Element zurückgegeben werden kann. |
SyntaxError | Wird vom Parser ausgelöst, wenn ein Syntaxfehler auftritt. |
IndentationError | Wird ausgelöst, wenn eine falsche Einrückung vorliegt. |
TabError | Wird ausgelöst, wenn der Einzug aus inkonsistenten Tabulatoren und Leerzeichen besteht. |
SystemError | Wird ausgelöst, wenn der Interpreter einen internen Fehler erkennt. |
SystemExit | Durch sys.exit() Funktion ausgelöst . |
TypeError | Wird ausgelöst, wenn eine Funktion oder Operation auf ein Objekt vom falschen Typ angewendet wird. |
UnboundLocalError | Wird ausgelöst, wenn in einer Funktion oder Methode auf eine lokale Variable verwiesen wird, an diese Variable jedoch kein Wert gebunden wurde. |
UnicodeError | Wird ausgelöst, wenn ein Unicode-bezogener Codierungs- oder Decodierungsfehler auftritt. |
UnicodeEncodeError | Wird ausgelöst, wenn während der Codierung ein Unicode-Fehler auftritt. |
UnicodeDecodeError | Wird ausgelöst, wenn beim Decodieren ein Unicode-Fehler auftritt. |
UnicodeTranslateError | Wird ausgelöst, wenn während der Übersetzung ein Unicode-Fehler auftritt. |
ValueError | Wird ausgelöst, wenn eine Funktion ein Argument vom richtigen Typ, aber vom falschen Wert erhält. |
ZeroDivisionError | Wird ausgelöst, wenn der zweite Operand der Divisions- oder Modulo-Operation Null ist. |
Bei Bedarf können wir auch unsere eigenen Ausnahmen in Python definieren. Weitere Informationen finden Sie unter Benutzerdefinierte Python-Ausnahmen.
Wir können diese integrierten und benutzerdefinierte Ausnahmen in Python behandeln try
, except
und finally
Aussagen. Um mehr über sie zu erfahren, besuchen Sie Python try, außer und schließlich Anweisungen.