English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python Grundlagen教程

Flusskontrolle in Python

Python Funktion

Python Datentypen

Dateioperationen in Python

Python Objekte und Klassen

Python Datum und Zeit

Hochwertiges Wissen über Python

Python Referenzhandbuch

Python Fehler und eingebaute Ausnahmen

Wenn Python (Der Interpreter) auf einen Fehler stößt, wird eine Ausnahme ausgelöst. Zum Beispiel: Division durch Null. In diesem Artikel werden Sie die verschiedenen internen Ausnahmenbehandlungen in Python kennenlernen.

Beim Schreiben von Programmen stoßen wir oft auf Fehler.

Fehler, die durch eine falsche Struktur (Syntax) des Sprachgebrauchs verursacht werden, werden als Syntaxfehler oder Parsingfehler bezeichnet.

>>> if a < 3
  Datei "<interaktive Eingabe>, Zeile 1
    if a < 3
           ^
SyntaxError: ungültige Syntax

Hier können wir eine fehlende Kolon in der if-Anweisung bemerken.

Fehler können auch während der Ausführung auftreten, diese werden als Ausnahmen bezeichnet. Zum Beispiel tritt dies auf, wenn wir versuchen, eine Datei zu öffnen, die nicht existiert (FileNotFoundError), eine Zahl durch Null zu teilen (ZeroDivisionError), oder wenn wir das Modul nicht finden können, das wir versuchen zu importieren (ImportError).

Jedes Mal, wenn ein solcher laufzeitfehler auftritt, erstellt Python ein Ausnahmeobjekt. Wenn es nicht ordnungsgemäß behandelt wird, gibt es die Rückverfolgung des Fehlers sowie einige detaillierte Informationen über die Ursache des Fehlers aus.

>>> 1 / 0
Traceback (am meisten recente Anruf zuletzt):
 Datei "<string>, Zeile 301, in runcode
 Datei "<interaktive Eingabe>, Zeile 1, im <modul>
ZeroDivisionError: Division durch Null
>>> open("imaginary.txt")
Traceback (am meisten recente Anruf zuletzt):
 Datei "<string>, Zeile 301, in runcode
 Datei "<interaktive Eingabe>, Zeile 1, im <modul>
FileNotFoundError: [Errno 2] Kein solches Datei oder Verzeichnis: 'imaginary.txt'

Python内置异常

非法操作可能引发异常。Python中有很多内置的异常,当出现相应的错误时就会引发这些异常。我们可以使用local()内置函数查看所有的内置异常,如下所示。

>>> locals()['__builtins__']

这将为我们返回内置的异常,函数和属性的字典。

下面列出了Python编程中一些常见的内置异常以及导致该异常的错误。

Python内置标准异常
例外错误原因
AssertionError在assert语句失败时引发。
AttributeError在属性分配或引用失败时引发。
EOFError当input()函数达到文件结束条件时引发。
FloatingPointError当浮点运算失败时引发。
GeneratorExit在调用close()方法生成器时引发。
ImportError在找不到导入的模块时引发。
IndexError当序列的索引超出范围时引发。
KeyError在字典中找不到键时引发。
KeyboardInterrupt当用户按下中断键(Ctrl)时引发。 + 在执行c或Delete操作时引发。
MemoryError在操作内存不足时引发。
NameError在本地或全局范围内找不到变量时引发。
NotImplementedError尚未实现的方法。
OSErrorWird ausgelöst, wenn eine Systemoperation ein systembezogenes Fehler verursacht.
OverflowErrorWird ausgelöst, wenn das Ergebnis einer arithmetischen Operation zu groß ist, um dargestellt zu werden.
ReferenceErrorWird ausgelöst, wenn versucht wird, einen Referenzobjekt über einen schwachen Referenzproxy auf den Müllabfuhrzug zugreifen.
RuntimeErrorWird ausgelöst, wenn ein Fehler nicht zu einer anderen Kategorie gehört.
StopIterationWird durch die Funktion next() ausgelöst, um anzuzeigen, dass der Iterator keine weiteren Elemente zurückgeben kann.
SyntaxErrorWird durch den Parser ausgelöst, wenn ein Syntaxfehler auftritt.
IndentationErrorWird ausgelöst, wenn die Einrückung falsch ist.
TabErrorWird ausgelöst, wenn die Einrückung aus inkonsistenten Tabulatoren und Leerzeichen besteht.
SystemErrorWird ausgelöst, wenn der Interpreter einen internen Fehler erkennt.
SystemExitWird durch die Funktion sys.exit() ausgelöst.
TypeErrorWird ausgelöst, wenn eine Funktion oder eine Operation auf ein Objekt angewendet wird, das den falschen Typ hat.
UnboundLocalErrorWird ausgelöst, wenn auf lokale Variablen in einer Funktion oder einem Methodenaufruf verwiesen wird, ohne dass ein Wert diesem Variable zugeordnet wurde.
UnicodeErrorWird ausgelöst, wenn ein Encoding- oder Decoding-Fehler mit Unicode auftritt.
UnicodeEncodeErrorWird ausgelöst, wenn ein Unicode-bezogener Fehler während des Codings auftritt.
UnicodeDecodeErrorWird ausgelöst, wenn ein Unicode-bezogener Fehler während des Dekodings auftritt.
UnicodeTranslateErrorWird ausgelöst, wenn ein Unicode-bezogener Fehler während des Übersetzungsprozesses auftritt.
ValueErrorWird ausgelöst, wenn die Funktion den richtigen Typ aber den falschen Wert des Parameters erhält.
ZeroDivisionErrorWird ausgelöst, wenn der zweite Operanden der Division oder Modulo-Operation null ist.

Wir können auch unsere eigenen Ausnahmen in Python definieren (wenn erforderlich). Besuchen Sie diese Seite, um mehr über zu erfahrenBenutzerdefinierte AusnahmenMehr Informationen. 

Wir können die Anweisungen try, except und finally verwendenDiese eingebauten und benutzerdefinierten Ausnahmen in Python zu behandeln.