English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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中有很多内置的异常,当出现相应的错误时就会引发这些异常。我们可以使用local()内置函数查看所有的内置异常,如下所示。
>>> locals()['__builtins__']
这将为我们返回内置的异常,函数和属性的字典。
下面列出了Python编程中一些常见的内置异常以及导致该异常的错误。
例外 | 错误原因 |
---|---|
AssertionError | 在assert语句失败时引发。 |
AttributeError | 在属性分配或引用失败时引发。 |
EOFError | 当input()函数达到文件结束条件时引发。 |
FloatingPointError | 当浮点运算失败时引发。 |
GeneratorExit | 在调用close()方法生成器时引发。 |
ImportError | 在找不到导入的模块时引发。 |
IndexError | 当序列的索引超出范围时引发。 |
KeyError | 在字典中找不到键时引发。 |
KeyboardInterrupt | 当用户按下中断键(Ctrl)时引发。 + 在执行c或Delete操作时引发。 |
MemoryError | 在操作内存不足时引发。 |
NameError | 在本地或全局范围内找不到变量时引发。 |
NotImplementedError | 尚未实现的方法。 |
OSError | Wird ausgelöst, wenn eine Systemoperation ein systembezogenes Fehler verursacht. |
OverflowError | Wird ausgelöst, wenn das Ergebnis einer arithmetischen Operation zu groß ist, um dargestellt zu werden. |
ReferenceError | Wird ausgelöst, wenn versucht wird, einen Referenzobjekt über einen schwachen Referenzproxy auf den Müllabfuhrzug zugreifen. |
RuntimeError | Wird ausgelöst, wenn ein Fehler nicht zu einer anderen Kategorie gehört. |
StopIteration | Wird durch die Funktion next() ausgelöst, um anzuzeigen, dass der Iterator keine weiteren Elemente zurückgeben kann. |
SyntaxError | Wird durch den Parser ausgelöst, wenn ein Syntaxfehler auftritt. |
IndentationError | Wird ausgelöst, wenn die Einrückung falsch ist. |
TabError | Wird ausgelöst, wenn die Einrückung aus inkonsistenten Tabulatoren und Leerzeichen besteht. |
SystemError | Wird ausgelöst, wenn der Interpreter einen internen Fehler erkennt. |
SystemExit | Wird durch die Funktion sys.exit() ausgelöst. |
TypeError | Wird ausgelöst, wenn eine Funktion oder eine Operation auf ein Objekt angewendet wird, das den falschen Typ hat. |
UnboundLocalError | Wird ausgelöst, wenn auf lokale Variablen in einer Funktion oder einem Methodenaufruf verwiesen wird, ohne dass ein Wert diesem Variable zugeordnet wurde. |
UnicodeError | Wird ausgelöst, wenn ein Encoding- oder Decoding-Fehler mit Unicode auftritt. |
UnicodeEncodeError | Wird ausgelöst, wenn ein Unicode-bezogener Fehler während des Codings auftritt. |
UnicodeDecodeError | Wird ausgelöst, wenn ein Unicode-bezogener Fehler während des Dekodings auftritt. |
UnicodeTranslateError | Wird ausgelöst, wenn ein Unicode-bezogener Fehler während des Übersetzungsprozesses auftritt. |
ValueError | Wird ausgelöst, wenn die Funktion den richtigen Typ aber den falschen Wert des Parameters erhält. |
ZeroDivisionError | Wird 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.