A.3 Eingebaute Exceptions
In Python existieren eine Reihe von eingebauten Exception-Typen. Diese Exceptions werden von Funktionen der Standardbibliothek oder vom Interpreter selbst geworfen. Sie sind eingebaut, das bedeutet, dass sie zu jeder Zeit im Quelltext verwendet werden können. Tabelle A.3 listet die eingebauten Exception-Typen auf und nennt übliche Umstände, unter denen sie auftreten. Die Vererbungshierarchie ist dabei durch die Einrückungstiefe des Typnamens angedeutet.
Exception-Typ | Auftreten |
---|---|
BaseException | Basisklasse aller eingebauter Exception-Typen (siehe Abschnitt 22.1.1) |
SystemExit | Beim Beenden des Programms durch sys.exit. Diese Exception verursacht keinen Traceback. |
KeyboardInterrupt | beim Beenden des Programms per Tastenkombination (üblicherweise mit (Strg) + (C)) |
GeneratorExit | beim Beenden eines Generators |
Exception | Basisklasse aller »normalen« Exceptions. Auch alle selbstdefinierten Exception-Typen sollten von Exception erben. |
StopIteration | beim Aufruf der Methode next eines Iterators, wenn kein nächstes Element existiert |
ArithmeticError | Basisklasse der Exception-Typen für Fehler in arithmetischen Operationen |
FloatingPointError | bei einer fehlschlagenden Gleitkommaoperation |
OverflowError | bei einer arithmetischen Berechnung, deren Ergebnis zu groß für den verwendeten Datentyp ist |
ZeroDivisionError | bei einer Division durch Null |
AssertionError | bei einer fehlschlagenden assert-Anweisung (siehe Abschnitt 22.2) |
AttributeError | beim Zugriff auf ein nicht existierendes Attribut |
BufferError | bei einer fehlgeschlagenen Operation auf einem Buffer-Datentyp |
EOFError | wenn die eingebaute Funktion input ein Dateiende (EOF für End-of-File) signalisiert bekommt, ohne vorher Daten lesen zu können |
ImportError | bei einer fehlschlagenden import-Anweisung |
ModuleNotFoundError | wenn eine import-Anweisung fehlschlägt, weil kein Modul mit dem angegebenen Namen existiert |
LookupError | Basisklasse der Exception-Typen für Fehler bei Schlüssel- oder Indexzugriffen |
IndexError | bei einem Sequenzzugriff mit einem ungültigen Index |
KeyError | bei einem Dictionary-Zugriff mit einem ungültigen Schlüssel |
MemoryError | wenn nicht genügend Speicher zur Ausführung einer Operation vorhanden ist |
NameError | wenn ein unbekannter lokaler oder globaler Bezeichner verwendet wird |
UnboundLocalError | wenn in einer Funktion oder Methode eine lokale Referenz verwendet wird, bevor ihr eine Instanz zugewiesen wurde |
OSError | bei systembezogenen Fehlern |
BlockingIOError | wenn eine als nicht-blockierend eingestellte Operation, zum Beispiel ein Zugriff auf einen Socket, blockieren würde |
ChildProcessError | wenn eine Operation auf einem Kindprozess fehlgeschlagen ist |
ConnectionError | bei verbindungsbezogenen Fehlern |
BrokenPipeError | bei Schreibzugriffen auf eine Pipe, deren anderes Ende geschlossen wurde |
ConnectionAbortedError | bei einem von der Gegenseite abgebrochenen Verbindungsversuch |
ConnectionRefusedError | bei einem von der Gegenseite abgelehnten Verbindungsversuch |
ConnectionResetError | bei einer von der Gegenseite zurückgesetzten Verbindung |
FileExistsError | beim Versuch, eine existierende Datei zu erstellen |
FileNotFoundError | beim Versuch, auf eine nicht existierende Datei zuzugreifen |
InterruptedError | wenn ein Systemaufruf durch ein Signal unterbrochen wurde |
IsADirectoryError | beim Versuch, eine Dateioperation auf einem Verzeichnis durchzuführen |
NotADirectoryError | beim Versuch, eine Verzeichnisoperation auf einer Datei durchzuführen |
PermissionError | wenn die für eine Operation nötigen Zugriffsrechte nicht vorhanden sind |
ProcessLookupError | wenn ein Prozess nicht gefunden werden konnte |
TimeoutError | beim Überschreiten eines Zeitlimits durch eine Systemoperation |
ReferenceError | beim Zugriff auf ein Objekt, das von der Garbage Collection bereits freigegeben wurde |
RuntimeError | bei einem Fehler, der durch keinen der anderen Exception-Typen abgedeckt wird |
NotImplementedError | Basisklassen werfen diese Exception aus Methoden heraus, die von einer abgeleiteten Klasse implementiert werden müssen. |
SyntaxError | bei einem Syntaxfehler im Programm bzw. in einem an exec oder eval übergebenen Code |
IndentationError | Basisklasse der Exception-Typen für Fehler durch unkorrektes Einrücken des Quellcodes |
TabError | bei fehlerhafter Vermischung von Tabulatoren und Leerzeichen zur Einrückung |
SystemError | bei einem internen Fehler im Python-Interpreter |
TypeError | bei einer Operation auf einer Instanz eines dafür ungeeigneten Datentyps |
ValueError | bei einer Operation auf einer Instanz, die zwar einen passenden Typ, aber einen unpassenden Wert hat |
UnicodeError | bei fehlerhafter En- oder Decodierung von Unicode-Zeichen |
UnicodeDecodeError | bei einem Unicode-spezifischen Fehler in einer Decodierung |
UnicodeEncodeError | bei einem Unicode-spezifischen Fehler in einer Encodierung |
UnicodeTranslateError | bei einem Unicode-spezifischen Fehler in einer Übersetzung |
Warning | Basisklasse der Warnungstypen |
DeprecationWarning | bei der Verwendung einer als veraltet eingestuften Funktionalität |
PendingDeprecationWarning | bei der Verwendung einer als zukünftig veraltet eingestuften Funktionalität |
RuntimeWarning | bei Umständen, die zu Laufzeitfehlern führen könnten, beispielsweise Versionsdifferenzen |
SyntaxWarning | bei einer Syntax, die problematisch, aber gültig ist |
UserWarning | Basisklasse für selbstdefinierte Warnungen |
FutureWarning | bei der Verwendung von Funktionalitäten, die sich in zukünftigen Versionen verändern werden |
ImportWarning | bei Problemen, die durch das Einbinden eines Moduls entstehen |
UnicodeWarning | bei Unicode-spezifischen Problemen |
BytesWarning | bei bytes-spezifischen Problemen |
ResourceWarning | bei Problemen mit der Nutzung von Ressourcen |