Exception Handling

Die in diesem Kapitel beschriebenen Funktionen ermöglichen Ihnen die Handhabung und Auslösung von Python-Exceptions. Es ist wichtig, einige Grundlagen der Python-Exception-Behandlung zu verstehen. Sie funktioniert ähnlich wie die POSIX-Variable errno: Es gibt eine globale (pro Thread) Anzeige für den zuletzt aufgetretenen Fehler. Die meisten C-API-Funktionen löschen diese bei Erfolg nicht, setzen sie aber, um die Ursache des Fehlers bei einem Fehlschlag anzugeben. Die meisten C-API-Funktionen geben auch eine Fehleranzeige zurück, normalerweise NULL, wenn sie einen Zeiger zurückgeben sollen, oder -1, wenn sie eine Ganzzahl zurückgeben (Ausnahme: Die PyArg_*-Funktionen geben 1 für Erfolg und 0 für Misserfolg zurück).

Konkret besteht die Fehleranzeige aus drei Objektzeigern: dem Typ der Exception, dem Wert der Exception und dem Traceback-Objekt. Jeder dieser Zeiger kann NULL sein, wenn er nicht gesetzt ist (obwohl einige Kombinationen verboten sind, z.B. kann man keinen nicht- NULL Traceback haben, wenn der Exceptionstyp NULL ist).

Wenn eine Funktion fehlschlagen muss, weil eine von ihr aufgerufene Funktion fehlschlug, setzt sie im Allgemeinen nicht die Fehleranzeige; die von ihr aufgerufene Funktion hat sie bereits gesetzt. Sie ist dafür verantwortlich, entweder den Fehler zu behandeln und die Exception zu löschen oder nach der Bereinigung aller gehaltenen Ressourcen (wie Objektverweise oder Speicherzuweisungen) zurückzukehren; sie sollte nicht normal fortfahren, wenn sie nicht vorbereitet ist, den Fehler zu behandeln. Bei einer Rückkehr aufgrund eines Fehlers ist es wichtig, dem Aufrufer anzuzeigen, dass ein Fehler gesetzt wurde. Wenn der Fehler nicht behandelt oder sorgfältig weitergegeben wird, können zusätzliche Aufrufe an die Python/C-API nicht wie beabsichtigt funktionieren und auf mysteriöse Weise fehlschlagen.

Hinweis

Die Fehleranzeige ist **nicht** das Ergebnis von sys.exc_info(). Die erstere entspricht einer noch nicht abgefangenen Exception (die sich daher noch in der Ausbreitung befindet), während letztere eine Exception zurückgibt, nachdem sie abgefangen wurde (und sich daher nicht mehr in der Ausbreitung befindet).

Ausgeben und Löschen

void PyErr_Clear()
Teil der Stable ABI.

Löscht die Fehleranzeige. Wenn die Fehleranzeige nicht gesetzt ist, hat dies keine Auswirkung.

void PyErr_PrintEx(int set_sys_last_vars)
Teil der Stable ABI.

Gibt einen Standard-Traceback an sys.stderr aus und löscht die Fehleranzeige. **Es sei denn**, die Exception ist eine SystemExit, in diesem Fall wird kein Traceback ausgegeben und der Python-Prozess wird mit dem Fehlercode beendet, der durch die SystemExit-Instanz angegeben wurde.

Rufen Sie diese Funktion **nur** auf, wenn die Fehleranzeige gesetzt ist. Andernfalls verursacht sie einen fatalen Fehler!

Wenn set_sys_last_vars ungleich Null ist, wird die Variable sys.last_exc auf die ausgegebene Exception gesetzt. Aus Gründen der Abwärtskompatibilität werden auch die veralteten Variablen sys.last_type, sys.last_value und sys.last_traceback auf den Typ, den Wert und den Traceback dieser Exception gesetzt.

Geändert in Version 3.12: Das Setzen von sys.last_exc wurde hinzugefügt.

void PyErr_Print()
Teil der Stable ABI.

Alias für PyErr_PrintEx(1).

void PyErr_WriteUnraisable(PyObject *obj)
Teil der Stable ABI.

Ruft sys.unraisablehook() unter Verwendung der aktuellen Exception und des Arguments obj auf.

Diese Hilfsfunktion gibt eine Warnmeldung an sys.stderr aus, wenn eine Exception gesetzt wurde, es dem Interpreter aber unmöglich ist, die Exception tatsächlich auszulösen. Sie wird zum Beispiel verwendet, wenn in einer __del__()-Methode eine Exception auftritt.

Die Funktion wird mit einem einzelnen Argument obj aufgerufen, das den Kontext identifiziert, in dem die nicht auslösbare Exception aufgetreten ist. Wenn möglich, wird die Darstellung von obj in der Warnmeldung ausgegeben. Wenn obj NULL ist, wird nur der Traceback ausgegeben.

Beim Aufruf dieser Funktion muss eine Exception gesetzt sein.

Geändert in Version 3.4: Traceback ausgeben. Nur Traceback ausgeben, wenn obj NULL ist.

Geändert in Version 3.8: Verwendet sys.unraisablehook().

void PyErr_FormatUnraisable(const char *format, ...)

Ähnlich wie PyErr_WriteUnraisable(), aber format und die nachfolgenden Parameter helfen bei der Formatierung der Warnmeldung; sie haben die gleiche Bedeutung und Werte wie in PyUnicode_FromFormat(). PyErr_WriteUnraisable(obj) ist ungefähr äquivalent zu PyErr_FormatUnraisable("Exception ignored in: %R", obj). Wenn format NULL ist, wird nur der Traceback ausgegeben.

Hinzugefügt in Version 3.13.

void PyErr_DisplayException(PyObject *exc)
Teil der Stable ABI seit Version 3.12.

Gibt die Standard-Traceback-Anzeige von exc an sys.stderr aus, einschließlich verketteter Exceptions und Notizen.

Hinzugefügt in Version 3.12.

Exceptions auslösen

Diese Funktionen helfen Ihnen, die Fehleranzeige des aktuellen Threads zu setzen. Zur Vereinfachung geben einige dieser Funktionen immer einen NULL-Zeiger für die Verwendung in einer return-Anweisung zurück.

void PyErr_SetString(PyObject *type, const char *message)
Teil der Stable ABI.

Dies ist die gebräuchlichste Methode, um die Fehleranzeige zu setzen. Das erste Argument gibt den Typ der Exception an; normalerweise ist es eine der Standard-Exceptions, z.B. PyExc_RuntimeError. Sie müssen keinen neuen starken Verweis darauf erstellen (z.B. mit Py_INCREF()). Das zweite Argument ist eine Fehlermeldung; sie wird aus 'utf-8' dekodiert.

void PyErr_SetObject(PyObject *type, PyObject *value)
Teil der Stable ABI.

Diese Funktion ist ähnlich wie PyErr_SetString(), ermöglicht Ihnen aber die Angabe eines beliebigen Python-Objekts für den „Wert“ der Exception.

PyObject *PyErr_Format(PyObject *exception, const char *format, ...)
Rückgabewert: Immer NULL. Teil der Stable ABI.

Diese Funktion setzt die Fehleranzeige und gibt NULL zurück. exception sollte eine Python-Exception-Klasse sein. format und die nachfolgenden Parameter helfen bei der Formatierung der Fehlermeldung; sie haben die gleiche Bedeutung und Werte wie in PyUnicode_FromFormat(). format ist ein ASCII-kodierter String.

PyObject *PyErr_FormatV(PyObject *exception, const char *format, va_list vargs)
Rückgabewert: Immer NULL. Teil der Stable ABI seit Version 3.5.

Gleich wie PyErr_Format(), aber nimmt ein va_list-Argument anstelle einer variablen Anzahl von Argumenten.

Hinzugefügt in Version 3.5.

void PyErr_SetNone(PyObject *type)
Teil der Stable ABI.

Dies ist eine Kurzform für PyErr_SetObject(type, Py_None).

int PyErr_BadArgument()
Teil der Stable ABI.

Dies ist eine Kurzform für PyErr_SetString(PyExc_TypeError, message), wobei message angibt, dass eine integrierte Operation mit einem ungültigen Argument aufgerufen wurde. Sie ist hauptsächlich für den internen Gebrauch bestimmt.

PyObject *PyErr_NoMemory()
Rückgabewert: Immer NULL. Teil der Stable ABI.

Dies ist eine Kurzform für PyErr_SetNone(PyExc_MemoryError); sie gibt NULL zurück, damit eine Objektzuweisungsfunktion return PyErr_NoMemory(); schreiben kann, wenn ihr der Speicher ausgeht.

PyObject *PyErr_SetFromErrno(PyObject *type)
Rückgabewert: Immer NULL. Teil der Stable ABI.

Dies ist eine Komfortfunktion zum Auslösen einer Exception, wenn eine C-Bibliotheksfunktion einen Fehler zurückgegeben und die C-Variable errno gesetzt hat. Sie erstellt ein Tupel-Objekt, dessen erster Eintrag der Ganzzahl-Wert von errno und dessen zweiter Eintrag die entsprechende Fehlermeldung (erhalten aus strerror()) ist, und ruft dann PyErr_SetObject(type, object) auf. Unter Unix, wenn der Wert von errno EINTR ist, was einen unterbrochenen Systemaufruf anzeigt, ruft dies PyErr_CheckSignals() auf, und wenn dies die Fehleranzeige gesetzt hat, lässt es sie gesetzt. Die Funktion gibt immer NULL zurück, so dass eine Wrapper-Funktion um einen Systemaufruf return PyErr_SetFromErrno(type); schreiben kann, wenn der Systemaufruf einen Fehler zurückgibt.

PyObject *PyErr_SetFromErrnoWithFilenameObject(PyObject *type, PyObject *filenameObject)
Rückgabewert: Immer NULL. Teil der Stable ABI.

Ähnlich wie PyErr_SetFromErrno(), mit dem zusätzlichen Verhalten, dass, wenn filenameObject nicht NULL ist, es dem Konstruktor von type als drittes Argument übergeben wird. Im Falle einer OSError-Exception wird dies verwendet, um das Attribut filename der Exception-Instanz zu definieren.

PyObject *PyErr_SetFromErrnoWithFilenameObjects(PyObject *type, PyObject *filenameObject, PyObject *filenameObject2)
Rückgabewert: Immer NULL. Teil der Stable ABI seit Version 3.7.

Ähnlich wie PyErr_SetFromErrnoWithFilenameObject(), nimmt aber ein zweites Dateinamenobjekt entgegen, um Fehler beim Aufruf einer Funktion auszulösen, die zwei Dateinamen erwartet.

Hinzugefügt in Version 3.4.

PyObject *PyErr_SetFromErrnoWithFilename(PyObject *type, const char *filename)
Rückgabewert: Immer NULL. Teil der Stable ABI.

Ähnlich wie PyErr_SetFromErrnoWithFilenameObject(), aber der Dateiname wird als C-String angegeben. filename wird aus der Dateisystemkodierung und Fehlerbehandlung dekodiert.

PyObject *PyErr_SetFromWindowsErr(int ierr)
Rückgabewert: Immer NULL. Teil der Stable ABI unter Windows seit Version 3.7.

Dies ist eine Komfortfunktion zum Auslösen von OSError. Wenn sie mit ierr von 0 aufgerufen wird, wird stattdessen der von einem Aufruf von GetLastError() zurückgegebene Fehlercode verwendet. Sie ruft die Win32-Funktion FormatMessage() auf, um die Windows-Beschreibung des durch ierr oder GetLastError() gegebenen Fehlercodes abzurufen, dann erstellt sie ein OSError-Objekt mit dem Attribut winerror auf den Fehlercode gesetzt, dem Attribut strerror auf die entsprechende Fehlermeldung (erhalten aus FormatMessage()) gesetzt und ruft dann PyErr_SetObject(PyExc_OSError, object) auf. Diese Funktion gibt immer NULL zurück.

Verfügbarkeit: Windows.

PyObject *PyErr_SetExcFromWindowsErr(PyObject *type, int ierr)
Rückgabewert: Immer NULL. Teil der Stable ABI unter Windows seit Version 3.7.

Ähnlich wie PyErr_SetFromWindowsErr(), mit einem zusätzlichen Parameter, der den auszulösenden Exceptionstyp angibt.

Verfügbarkeit: Windows.

PyObject *PyErr_SetFromWindowsErrWithFilename(int ierr, const char *filename)
Rückgabewert: Immer NULL. Teil der Stable ABI unter Windows seit Version 3.7.

Ähnlich wie PyErr_SetFromWindowsErr(), mit dem zusätzlichen Verhalten, dass, wenn filename nicht NULL ist, er aus der Dateisystemkodierung (os.fsdecode()) dekodiert und dem Konstruktor von OSError als drittes Argument übergeben wird, um das Attribut filename der Exception-Instanz zu definieren.

Verfügbarkeit: Windows.

PyObject *PyErr_SetExcFromWindowsErrWithFilenameObject(PyObject *type, int ierr, PyObject *filename)
Rückgabewert: Immer NULL. Teil der Stable ABI unter Windows seit Version 3.7.

Ähnlich wie PyErr_SetExcFromWindowsErr(), mit dem zusätzlichen Verhalten, dass, wenn filename nicht NULL ist, es dem Konstruktor von OSError als drittes Argument übergeben wird, um das Attribut filename der Exception-Instanz zu definieren.

Verfügbarkeit: Windows.

PyObject *PyErr_SetExcFromWindowsErrWithFilenameObjects(PyObject *type, int ierr, PyObject *filename, PyObject *filename2)
Rückgabewert: Immer NULL. Teil der Stable ABI unter Windows seit Version 3.7.

Ähnlich wie PyErr_SetExcFromWindowsErrWithFilenameObject(), aber akzeptiert ein zweites Dateinamenobjekt.

Verfügbarkeit: Windows.

Hinzugefügt in Version 3.4.

PyObject *PyErr_SetExcFromWindowsErrWithFilename(PyObject *type, int ierr, const char *filename)
Rückgabewert: Immer NULL. Teil der Stable ABI unter Windows seit Version 3.7.

Ähnlich wie PyErr_SetFromWindowsErrWithFilename(), mit einem zusätzlichen Parameter, der den auszulösenden Exceptionstyp angibt.

Verfügbarkeit: Windows.

PyObject *PyErr_SetImportError(PyObject *msg, PyObject *name, PyObject *path)
Rückgabewert: Immer NULL. Teil der Stable ABI seit Version 3.7.

Dies ist eine Hilfsfunktion, um ImportError auszulösen. msg wird als Nachrichtenzeichenkette der Ausnahme gesetzt. name und path, beides kann NULL sein, werden als die entsprechenden Attribute name und path der ImportError gesetzt.

Hinzugefügt in Version 3.3.

PyObject *PyErr_SetImportErrorSubclass(PyObject *exception, PyObject *msg, PyObject *name, PyObject *path)
Rückgabewert: Immer NULL. Teil der Stable ABI seit Version 3.6.

Ähnlich wie PyErr_SetImportError(), aber diese Funktion erlaubt die Angabe einer Unterklasse von ImportError zum Auslösen.

Hinzugefügt in Version 3.6.

void PyErr_SyntaxLocationObject(PyObject *filename, int lineno, int col_offset)

Setzt Datei-, Zeilen- und Offset-Informationen für die aktuelle Ausnahme. Wenn die aktuelle Ausnahme keine SyntaxError ist, werden zusätzliche Attribute gesetzt, die das Ausnahmeausgabesystem dazu veranlassen, die Ausnahme als SyntaxError zu behandeln.

Hinzugefügt in Version 3.4.

void PyErr_SyntaxLocationEx(const char *filename, int lineno, int col_offset)
Teil der Stable ABI seit Version 3.7.

Wie PyErr_SyntaxLocationObject(), aber filename ist eine Byte-Zeichenkette, die aus der Dateisystemkodierung und Fehlerbehandlung dekodiert wurde.

Hinzugefügt in Version 3.2.

void PyErr_SyntaxLocation(const char *filename, int lineno)
Teil der Stable ABI.

Wie PyErr_SyntaxLocationEx(), aber der Parameter col_offset wird weggelassen.

void PyErr_BadInternalCall()
Teil der Stable ABI.

Dies ist eine Abkürzung für PyErr_SetString(PyExc_SystemError, message), wobei message angibt, dass eine interne Operation (z. B. eine Python/C API-Funktion) mit einem ungültigen Argument aufgerufen wurde. Sie ist hauptsächlich für den internen Gebrauch bestimmt.

Warnungen ausgeben

Verwenden Sie diese Funktionen, um Warnungen aus C-Code auszugeben. Sie spiegeln ähnliche Funktionen wider, die vom Python warnings-Modul exportiert werden. Sie geben normalerweise eine Warnmeldung an sys.stderr aus; es ist jedoch auch möglich, dass der Benutzer angegeben hat, dass Warnungen in Fehler umgewandelt werden sollen. In diesem Fall lösen sie eine Ausnahme aus. Es ist auch möglich, dass die Funktionen aufgrund eines Problems mit der Warnmechanik eine Ausnahme auslösen. Der Rückgabewert ist 0, wenn keine Ausnahme ausgelöst wird, oder -1, wenn eine Ausnahme ausgelöst wird. (Es ist nicht möglich festzustellen, ob eine Warnmeldung tatsächlich ausgegeben wird, noch was der Grund für die Ausnahme ist; dies ist beabsichtigt.) Wenn eine Ausnahme ausgelöst wird, sollte der Aufrufer seine normale Ausnahmebehandlung durchführen (z. B. Py_DECREF() referenzierte Referenzen und einen Fehlerwert zurückgeben).

int PyErr_WarnEx(PyObject *category, const char *message, Py_ssize_t stack_level)
Teil der Stable ABI.

Gibt eine Warnmeldung aus. Das Argument category ist eine Warnungskategorie (siehe unten) oder NULL; das Argument message ist eine UTF-8-kodierte Zeichenkette. stack_level ist eine positive Zahl, die die Anzahl der Stack-Frames angibt; die Warnung wird von der aktuell ausgeführten Codezeile in diesem Stack-Frame ausgegeben. Ein stack_level von 1 ist die Funktion, die PyErr_WarnEx() aufruft, 2 ist die Funktion darüber und so weiter.

Warnungskategorien müssen Unterklassen von PyExc_Warning sein; PyExc_Warning ist eine Unterklasse von PyExc_Exception; die Standardwarnungskategorie ist PyExc_RuntimeWarning. Die Standard-Python-Warnungskategorien sind als globale Variablen verfügbar, deren Namen unter Warnungstypen aufgeführt sind.

Informationen zur Warnungssteuerung finden Sie in der Dokumentation des warnings-Moduls und der Option -W in der Dokumentation der Befehlszeile. Es gibt keine C-API zur Steuerung von Warnungen.

int PyErr_WarnExplicitObject(PyObject *category, PyObject *message, PyObject *filename, int lineno, PyObject *module, PyObject *registry)

Gibt eine Warnmeldung mit expliziter Kontrolle über alle Warnattribute aus. Dies ist ein direkter Wrapper um die Python-Funktion warnings.warn_explicit(); siehe dort für weitere Informationen. Die Argumente module und registry können auf NULL gesetzt werden, um den dort beschriebenen Standardeffekt zu erzielen.

Hinzugefügt in Version 3.4.

int PyErr_WarnExplicit(PyObject *category, const char *message, const char *filename, int lineno, const char *module, PyObject *registry)
Teil der Stable ABI.

Ähnlich wie PyErr_WarnExplicitObject(), nur dass message und module UTF-8-kodierte Zeichenketten sind und filename aus der Dateisystemkodierung und Fehlerbehandlung dekodiert wird.

int PyErr_WarnFormat(PyObject *category, Py_ssize_t stack_level, const char *format, ...)
Teil der Stable ABI.

Funktion ähnlich wie PyErr_WarnEx(), aber sie verwendet PyUnicode_FromFormat(), um die Warnmeldung zu formatieren. format ist eine ASCII-kodierte Zeichenkette.

Hinzugefügt in Version 3.2.

int PyErr_ResourceWarning(PyObject *source, Py_ssize_t stack_level, const char *format, ...)
Teil der Stable ABI seit Version 3.6.

Funktion ähnlich wie PyErr_WarnFormat(), aber category ist ResourceWarning und sie übergibt source an warnings.WarningMessage.

Hinzugefügt in Version 3.6.

Abfragen des Fehlerindikators

PyObject *PyErr_Occurred()
Rückgabewert: Ausgeliehene Referenz. Teil der Stable ABI.

Prüft, ob der Fehlerindikator gesetzt ist. Wenn gesetzt, gibt er den Ausnahmetyp zurück (das erste Argument des letzten Aufrufs einer der PyErr_Set* Funktionen oder von PyErr_Restore()). Wenn nicht gesetzt, gibt er NULL zurück. Sie besitzen keine Referenz auf den Rückgabewert, daher müssen Sie ihn nicht mit Py_DECREF() freigeben.

Der Aufrufer muss einen Thread-Status angehängt haben.

Hinweis

Vergleichen Sie den Rückgabewert nicht mit einer bestimmten Ausnahme. Verwenden Sie stattdessen PyErr_ExceptionMatches(), wie unten gezeigt. (Der Vergleich könnte leicht fehlschlagen, da die Ausnahme eine Instanz und keine Klasse sein kann, im Falle einer Klassen-Ausnahme, oder sie kann eine Unterklasse der erwarteten Ausnahme sein.)

int PyErr_ExceptionMatches(PyObject *exc)
Teil der Stable ABI.

Entspricht PyErr_GivenExceptionMatches(PyErr_Occurred(), exc). Dies sollte nur aufgerufen werden, wenn tatsächlich eine Ausnahme gesetzt ist; ein Speicherzugriffsverletzung tritt auf, wenn keine Ausnahme ausgelöst wurde.

int PyErr_GivenExceptionMatches(PyObject *given, PyObject *exc)
Teil der Stable ABI.

Gibt wahr zurück, wenn die gegebenen Ausnahme dem Ausnahmetyp in exc entspricht. Wenn exc ein Klassenobjekt ist, gibt dies auch wahr zurück, wenn given eine Instanz einer Unterklasse ist. Wenn exc ein Tupel ist, werden alle Ausnahmetypen im Tupel (und rekursiv in Untertupeln) auf eine Übereinstimmung durchsucht.

PyObject *PyErr_GetRaisedException(void)
Rückgabewert: Neue Referenz. Teil der Stable ABI seit Version 3.12.

Gibt die aktuell ausgelöste Ausnahme zurück und löscht gleichzeitig den Fehlerindikator. Gibt NULL zurück, wenn der Fehlerindikator nicht gesetzt ist.

Diese Funktion wird von Code verwendet, der Ausnahmen abfangen muss, oder von Code, der den Fehlerindikator vorübergehend speichern und wiederherstellen muss.

Zum Beispiel

{
   PyObject *exc = PyErr_GetRaisedException();

   /* ... code that might produce other errors ... */

   PyErr_SetRaisedException(exc);
}

Siehe auch

PyErr_GetHandledException(), um die aktuell behandelte Ausnahme zu speichern.

Hinzugefügt in Version 3.12.

void PyErr_SetRaisedException(PyObject *exc)
Teil der Stable ABI seit Version 3.12.

Setzt exc als die aktuell ausgelöste Ausnahme und löscht die vorhandene Ausnahme, falls eine gesetzt ist.

Warnung

Dieser Aufruf stiehlt eine Referenz auf exc, das eine gültige Ausnahme sein muss.

Hinzugefügt in Version 3.12.

void PyErr_Fetch(PyObject **ptype, PyObject **pvalue, PyObject **ptraceback)
Teil der Stable ABI.

Veraltet seit Version 3.12: Verwenden Sie stattdessen PyErr_GetRaisedException().

Ruft den Fehlerindikator in drei Variablen ab, deren Adressen übergeben werden. Wenn der Fehlerindikator nicht gesetzt ist, werden alle drei Variablen auf NULL gesetzt. Wenn er gesetzt ist, wird er gelöscht und Sie besitzen eine Referenz auf jedes abgerufene Objekt. Der Wert und das Traceback-Objekt können NULL sein, auch wenn das Typobjekt es nicht ist.

Hinweis

Diese Funktion wird normalerweise nur von älterem Code verwendet, der Ausnahmen abfangen oder den Fehlerindikator vorübergehend speichern und wiederherstellen muss.

Zum Beispiel

{
   PyObject *type, *value, *traceback;
   PyErr_Fetch(&type, &value, &traceback);

   /* ... code that might produce other errors ... */

   PyErr_Restore(type, value, traceback);
}
void PyErr_Restore(PyObject *type, PyObject *value, PyObject *traceback)
Teil der Stable ABI.

Veraltet seit Version 3.12: Verwenden Sie stattdessen PyErr_SetRaisedException().

Setzt den Fehlerindikator aus den drei Objekten type, value und traceback und löscht die vorhandene Ausnahme, falls eine gesetzt ist. Wenn die Objekte NULL sind, wird der Fehlerindikator gelöscht. Übergeben Sie keinen NULL-Typ und keinen Nicht-NULL-Wert oder Traceback. Der Ausnahmetyp sollte eine Klasse sein. Übergeben Sie keinen ungültigen Ausnahmetyp oder -wert. (Die Verletzung dieser Regeln führt später zu subtilen Problemen.) Dieser Aufruf gibt eine Referenz auf jedes Objekt weg: Sie müssen eine Referenz auf jedes Objekt vor dem Aufruf besitzen und nach dem Aufruf besitzen Sie diese Referenzen nicht mehr. (Wenn Sie das nicht verstehen, verwenden Sie diese Funktion nicht. Ich habe Sie gewarnt.)

Hinweis

Diese Funktion wird normalerweise nur von älterem Code verwendet, der den Fehlerindikator vorübergehend speichern und wiederherstellen muss. Verwenden Sie PyErr_Fetch(), um den aktuellen Fehlerindikator zu speichern.

void PyErr_NormalizeException(PyObject **exc, PyObject **val, PyObject **tb)
Teil der Stable ABI.

Veraltet seit Version 3.12: Verwenden Sie stattdessen PyErr_GetRaisedException(), um eine mögliche De-Normalisierung zu vermeiden.

Unter bestimmten Umständen können die von PyErr_Fetch() unten zurückgegebenen Werte "unnormalisiert" sein, d. h., *exc ist ein Klassenobjekt, aber *val ist keine Instanz derselben Klasse. Diese Funktion kann verwendet werden, um die Klasse in diesem Fall zu instanziieren. Wenn die Werte bereits normalisiert sind, passiert nichts. Die verzögerte Normalisierung dient der Leistungssteigerung.

Hinweis

Diese Funktion setzt implizit nicht das Attribut __traceback__ für den Ausnahmewert. Wenn das Setzen des Tracebacks entsprechend gewünscht ist, ist der folgende zusätzliche Ausschnitt erforderlich.

if (tb != NULL) {
  PyException_SetTraceback(val, tb);
}
PyObject *PyErr_GetHandledException(void)
Teil des Stable ABI seit Version 3.11.

Ruft die aktive Ausnahmeinstanz ab, wie sie von sys.exception() zurückgegeben würde. Dies bezieht sich auf eine Ausnahme, die *bereits abgefangen* wurde, nicht auf eine, die gerade erst ausgelöst wurde. Gibt eine neue Referenz auf die Ausnahme zurück oder NULL. Modifiziert nicht den Ausnahme-Zustand des Interpreters.

Hinweis

Diese Funktion wird normalerweise nicht von Code verwendet, der Ausnahmen behandeln möchte. Stattdessen kann sie verwendet werden, wenn Code den Ausnahme-Zustand vorübergehend speichern und wiederherstellen muss. Verwenden Sie PyErr_SetHandledException(), um den Ausnahme-Zustand wiederherzustellen oder zu löschen.

Hinzugefügt in Version 3.11.

void PyErr_SetHandledException(PyObject *exc)
Teil des Stable ABI seit Version 3.11.

Setzt die aktive Ausnahme, wie sie von sys.exception() bekannt ist. Dies bezieht sich auf eine Ausnahme, die *bereits abgefangen* wurde, nicht auf eine, die gerade erst ausgelöst wurde. Um den Ausnahme-Zustand zu löschen, übergeben Sie NULL.

Hinweis

Diese Funktion wird normalerweise nicht von Code verwendet, der Ausnahmen behandeln möchte. Stattdessen kann sie verwendet werden, wenn Code den Ausnahme-Zustand vorübergehend speichern und wiederherstellen muss. Verwenden Sie PyErr_GetHandledException(), um den Ausnahme-Zustand zu erhalten.

Hinzugefügt in Version 3.11.

void PyErr_GetExcInfo(PyObject **ptype, PyObject **pvalue, PyObject **ptraceback)
Teil der Stable ABI seit Version 3.7.

Ruft die alte Darstellung der Ausnahmeinformationen ab, wie sie von sys.exc_info() bekannt ist. Dies bezieht sich auf eine Ausnahme, die *bereits abgefangen* wurde, nicht auf eine, die gerade erst ausgelöst wurde. Gibt neue Referenzen für die drei Objekte zurück, von denen jedes NULL sein kann. Modifiziert nicht den Zustand der Ausnahmeinformationen. Diese Funktion ist aus Kompatibilitätsgründen beibehalten. Bevorzugen Sie die Verwendung von PyErr_GetHandledException().

Hinweis

Diese Funktion wird normalerweise nicht von Code verwendet, der Ausnahmen behandeln möchte. Stattdessen kann sie verwendet werden, wenn Code den Ausnahme-Zustand vorübergehend speichern und wiederherstellen muss. Verwenden Sie PyErr_SetExcInfo(), um den Ausnahme-Zustand wiederherzustellen oder zu löschen.

Hinzugefügt in Version 3.3.

void PyErr_SetExcInfo(PyObject *type, PyObject *value, PyObject *traceback)
Teil der Stable ABI seit Version 3.7.

Setzt die Ausnahmeinformationen, wie sie von sys.exc_info() bekannt sind. Dies bezieht sich auf eine Ausnahme, die *bereits abgefangen* wurde, nicht auf eine, die gerade erst ausgelöst wurde. Diese Funktion stiehlt die Referenzen der Argumente. Um den Ausnahme-Zustand zu löschen, übergeben Sie für alle drei Argumente NULL. Diese Funktion ist aus Kompatibilitätsgründen beibehalten. Bevorzugen Sie die Verwendung von PyErr_SetHandledException().

Hinweis

Diese Funktion wird normalerweise nicht von Code verwendet, der Ausnahmen behandeln möchte. Stattdessen kann sie verwendet werden, wenn Code den Ausnahme-Zustand vorübergehend speichern und wiederherstellen muss. Verwenden Sie PyErr_GetExcInfo(), um den Ausnahme-Zustand zu lesen.

Hinzugefügt in Version 3.3.

Geändert in Version 3.11: Die Argumente type und traceback werden nicht mehr verwendet und können NULL sein. Der Interpreter leitet sie nun aus der Ausnahmeinstanz (dem Argument value) ab. Die Funktion stiehlt weiterhin Referenzen von allen drei Argumenten.

Signalbehandlung

int PyErr_CheckSignals()
Teil der Stable ABI.

Diese Funktion interagiert mit der Signalbehandlung von Python.

Wenn die Funktion vom Haupt-Thread und unter dem Haupt-Python-Interpreter aufgerufen wird, prüft sie, ob ein Signal an die Prozesse gesendet wurde, und ruft gegebenenfalls den entsprechenden Signalhandler auf. Wenn das signal-Modul unterstützt wird, kann dies einen in Python geschriebenen Signalhandler aufrufen.

Die Funktion versucht, alle ausstehenden Signale zu behandeln, und gibt dann 0 zurück. Wenn jedoch ein Python-Signalhandler eine Ausnahme auslöst, wird die Fehleranzeige gesetzt und die Funktion gibt sofort -1 zurück (so dass andere ausstehende Signale möglicherweise noch nicht behandelt wurden: sie werden bei der nächsten PyErr_CheckSignals()-Aufruf behandelt).

Wenn die Funktion von einem Nicht-Haupt-Thread oder unter einem Nicht-Haupt-Python-Interpreter aufgerufen wird, tut sie nichts und gibt 0 zurück.

Diese Funktion kann von langlaufendem C-Code aufgerufen werden, der durch Benutzeranfragen (wie das Drücken von Strg+C) unterbrechbar sein soll.

Hinweis

Der Standard-Python-Signalhandler für SIGINT löst die KeyboardInterrupt-Ausnahme aus.

void PyErr_SetInterrupt()
Teil der Stable ABI.

Simuliert die Auswirkung eines eingehenden SIGINT-Signals. Dies ist äquivalent zu PyErr_SetInterruptEx(SIGINT).

Hinweis

Diese Funktion ist async-signal-sicher. Sie kann ohne einen angehängten Thread-Zustand und von einem C-Signalhandler aus aufgerufen werden.

int PyErr_SetInterruptEx(int signum)
Teil der Stable ABI seit Version 3.10.

Simuliert die Auswirkung eines eingehenden Signals. Beim nächsten Aufruf von PyErr_CheckSignals() wird der Python-Signalhandler für die angegebene Signalnummer aufgerufen.

Diese Funktion kann von C-Code aufgerufen werden, der seine eigene Signalbehandlung einrichtet und erwartet, dass Python-Signalhandler wie erwartet aufgerufen werden, wenn eine Unterbrechung angefordert wird (z. B. wenn der Benutzer Strg+C drückt, um eine Operation zu unterbrechen).

Wenn das angegebene Signal nicht von Python behandelt wird (es wurde auf signal.SIG_DFL oder signal.SIG_IGN gesetzt), wird es ignoriert.

Wenn signum außerhalb des zulässigen Bereichs von Signalnummern liegt, wird -1 zurückgegeben. Andernfalls wird 0 zurückgegeben. Die Fehleranzeige wird von dieser Funktion nie geändert.

Hinweis

Diese Funktion ist async-signal-sicher. Sie kann ohne einen angehängten Thread-Zustand und von einem C-Signalhandler aus aufgerufen werden.

Hinzugefügt in Version 3.10.

int PySignal_SetWakeupFd(int fd)

Diese Hilfsfunktion gibt einen Dateideskriptor an, auf den die Signalnummer als einzelnes Byte geschrieben wird, wenn ein Signal empfangen wird. fd muss nicht blockierend sein. Sie gibt den vorherigen Dateideskriptor zurück.

Der Wert -1 deaktiviert die Funktion; dies ist der Anfangszustand. Dies ist äquivalent zu signal.set_wakeup_fd() in Python, jedoch ohne Fehlerprüfung. fd sollte ein gültiger Dateideskriptor sein. Die Funktion sollte nur vom Haupt-Thread aufgerufen werden.

Geändert in Version 3.5: Unter Windows unterstützt die Funktion nun auch Socket-Handles.

Ausnahmeklassen

PyObject *PyErr_NewException(const char *name, PyObject *base, PyObject *dict)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Diese Hilfsfunktion erstellt und gibt eine neue Ausnahmeklasse zurück. Das Argument name muss der Name der neuen Ausnahme sein, eine C-Zeichenkette im Format modul.klassenname. Die Argumente base und dict sind normalerweise NULL. Dies erstellt ein Klassenobjekt, das von Exception abgeleitet ist (in C zugänglich als PyExc_Exception).

Das Attribut __module__ der neuen Klasse wird auf den ersten Teil (bis zum letzten Punkt) des Arguments name gesetzt, und der Klassenname wird auf den letzten Teil (nach dem letzten Punkt) gesetzt. Das Argument base kann verwendet werden, um alternative Basisklassen anzugeben; es kann entweder nur eine Klasse oder ein Tupel von Klassen sein. Das Argument dict kann verwendet werden, um ein Dictionary von Klassenvariablen und Methoden anzugeben.

PyObject *PyErr_NewExceptionWithDoc(const char *name, const char *doc, PyObject *base, PyObject *dict)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Wie PyErr_NewException(), aber die neue Ausnahmeklasse kann leicht mit einem Docstring versehen werden: Wenn doc nicht NULL ist, wird es als Docstring für die Ausnahmeklasse verwendet.

Hinzugefügt in Version 3.2.

int PyExceptionClass_Check(PyObject *ob)

Gibt ungleich Null zurück, wenn ob eine Ausnahmeklasse ist, sonst Null. Diese Funktion ist immer erfolgreich.

const char *PyExceptionClass_Name(PyObject *ob)
Teil der Stable ABI seit Version 3.8.

Gibt tp_name der Ausnahmeklasse ob zurück.

Ausnahmeobjekte

PyObject *PyException_GetTraceback(PyObject *ex)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Gibt den Traceback, der mit der Ausnahme assoziiert ist, als neue Referenz zurück, wie er über das Attribut __traceback__ aus Python zugänglich ist. Wenn kein Traceback assoziiert ist, wird NULL zurückgegeben.

int PyException_SetTraceback(PyObject *ex, PyObject *tb)
Teil der Stable ABI.

Setzt den Traceback, der mit der Ausnahme assoziiert ist, auf tb. Verwenden Sie Py_None, um ihn zu löschen.

PyObject *PyException_GetContext(PyObject *ex)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Gibt den Kontext (eine weitere Ausnahmeinstanz, während deren Behandlung ex ausgelöst wurde) zurück, der mit der Ausnahme assoziiert ist, als neue Referenz, wie er über das Attribut __context__ aus Python zugänglich ist. Wenn kein Kontext assoziiert ist, wird NULL zurückgegeben.

void PyException_SetContext(PyObject *ex, PyObject *ctx)
Teil der Stable ABI.

Setzt den Kontext, der mit der Ausnahme assoziiert ist, auf ctx. Verwenden Sie NULL, um ihn zu löschen. Es gibt keine Typenprüfung, um sicherzustellen, dass ctx eine Ausnahmeinstanz ist. Dies stiehlt eine Referenz auf ctx.

PyObject *PyException_GetCause(PyObject *ex)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Gibt die Ursache (entweder eine Ausnahmeinstanz oder None, gesetzt durch raise ... from ...) zurück, die mit der Ausnahme assoziiert ist, als neue Referenz, wie sie über das Attribut __cause__ aus Python zugänglich ist.

void PyException_SetCause(PyObject *ex, PyObject *cause)
Teil der Stable ABI.

Setzt die Ursache, die mit der Ausnahme assoziiert ist, auf cause. Verwenden Sie NULL, um sie zu löschen. Es gibt keine Typenprüfung, um sicherzustellen, dass cause entweder eine Ausnahmeinstanz oder None ist. Dies stiehlt eine Referenz auf cause.

Das Attribut __suppress_context__ wird von dieser Funktion implizit auf True gesetzt.

PyObject *PyException_GetArgs(PyObject *ex)
Rückgabewert: Neue Referenz. Teil der Stable ABI seit Version 3.12.

Gibt args der Ausnahme ex zurück.

void PyException_SetArgs(PyObject *ex, PyObject *args)
Teil der Stable ABI seit Version 3.12.

Setzt args der Ausnahme ex auf args.

PyObject *PyUnstable_Exc_PrepReraiseStar(PyObject *orig, PyObject *excs)
Dies ist eine Instabile API. Sie kann sich ohne Vorwarnung in kleineren Releases ändern.

Implementiert einen Teil der Interpreter-Implementierung von except*. orig ist die ursprüngliche abgefangene Ausnahme, und excs ist die Liste der auszulösenden Ausnahmen. Diese Liste enthält den unbehandelten Teil von orig, falls vorhanden, sowie die Ausnahmen, die aus den except*-Klauseln ausgelöst wurden (sodass sie einen anderen Traceback als orig haben) und diejenigen, die erneut ausgelöst wurden (und denselben Traceback wie orig haben). Gibt die ExceptionGroup zurück, die schließlich erneut ausgelöst werden muss, oder None, wenn nichts erneut ausgelöst werden muss.

Hinzugefügt in Version 3.12.

Unicode-Ausnahmeobjekte

Die folgenden Funktionen werden verwendet, um Unicode-Ausnahmen aus C zu erstellen und zu ändern.

PyObject *PyUnicodeDecodeError_Create(const char *encoding, const char *object, Py_ssize_t length, Py_ssize_t start, Py_ssize_t end, const char *reason)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Erstellt ein UnicodeDecodeError-Objekt mit den Attributen encoding, object, length, start, end und reason. encoding und reason sind UTF-8-kodierte Zeichenketten.

PyObject *PyUnicodeDecodeError_GetEncoding(PyObject *exc)
PyObject *PyUnicodeEncodeError_GetEncoding(PyObject *exc)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Gibt das Attribut encoding des angegebenen Ausnahmeobjekts zurück.

PyObject *PyUnicodeDecodeError_GetObject(PyObject *exc)
PyObject *PyUnicodeEncodeError_GetObject(PyObject *exc)
PyObject *PyUnicodeTranslateError_GetObject(PyObject *exc)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Gibt das Attribut object des angegebenen Ausnahmeobjekts zurück.

int PyUnicodeDecodeError_GetStart(PyObject *exc, Py_ssize_t *start)
int PyUnicodeEncodeError_GetStart(PyObject *exc, Py_ssize_t *start)
int PyUnicodeTranslateError_GetStart(PyObject *exc, Py_ssize_t *start)
Teil der Stable ABI.

Holt das Attribut start des angegebenen Ausnahmeobjekts und platziert es in *start. start darf nicht NULL sein. Gibt 0 bei Erfolg, -1 bei Misserfolg zurück.

Wenn das UnicodeError.object eine leere Sequenz ist, ist der resultierende start 0. Andernfalls wird es auf [0, len(object) - 1] gekürzt.

Siehe auch

UnicodeError.start

int PyUnicodeDecodeError_SetStart(PyObject *exc, Py_ssize_t start)
int PyUnicodeEncodeError_SetStart(PyObject *exc, Py_ssize_t start)
int PyUnicodeTranslateError_SetStart(PyObject *exc, Py_ssize_t start)
Teil der Stable ABI.

Setzt das Attribut start des angegebenen Ausnahmeobjekts auf start. Gibt 0 bei Erfolg, -1 bei Misserfolg zurück.

Hinweis

Obwohl die Übergabe eines negativen start keine Ausnahme auslöst, werden die entsprechenden Getter es nicht als relatives Offset betrachten.

int PyUnicodeDecodeError_GetEnd(PyObject *exc, Py_ssize_t *end)
int PyUnicodeEncodeError_GetEnd(PyObject *exc, Py_ssize_t *end)
int PyUnicodeTranslateError_GetEnd(PyObject *exc, Py_ssize_t *end)
Teil der Stable ABI.

Holt das Attribut end des angegebenen Ausnahmeobjekts und platziert es in *end. end darf nicht NULL sein. Gibt 0 bei Erfolg, -1 bei Misserfolg zurück.

Wenn das UnicodeError.object eine leere Sequenz ist, ist der resultierende end 0. Andernfalls wird er auf [1, len(object)] gekürzt.

int PyUnicodeDecodeError_SetEnd(PyObject *exc, Py_ssize_t end)
int PyUnicodeEncodeError_SetEnd(PyObject *exc, Py_ssize_t end)
int PyUnicodeTranslateError_SetEnd(PyObject *exc, Py_ssize_t end)
Teil der Stable ABI.

Setzt das end-Attribut des gegebenen Ausnahmeobjekts auf end. Gibt 0 bei Erfolg, -1 bei Misserfolg zurück.

Siehe auch

UnicodeError.end

PyObject *PyUnicodeDecodeError_GetReason(PyObject *exc)
PyObject *PyUnicodeEncodeError_GetReason(PyObject *exc)
PyObject *PyUnicodeTranslateError_GetReason(PyObject *exc)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Gibt das reason-Attribut des gegebenen Ausnahmeobjekts zurück.

int PyUnicodeDecodeError_SetReason(PyObject *exc, const char *reason)
int PyUnicodeEncodeError_SetReason(PyObject *exc, const char *reason)
int PyUnicodeTranslateError_SetReason(PyObject *exc, const char *reason)
Teil der Stable ABI.

Setzt das reason-Attribut des gegebenen Ausnahmeobjekts auf reason. Gibt 0 bei Erfolg, -1 bei Misserfolg zurück.

Rekursionssteuerung

Diese beiden Funktionen bieten eine Möglichkeit, sichere rekursive Aufrufe auf C-Ebene durchzuführen, sowohl im Kern als auch in Erweiterungsmodulen. Sie werden benötigt, wenn der rekursive Code nicht unbedingt Python-Code aufruft (der seine Rekursionstiefe automatisch verfolgt). Sie werden auch nicht für tp_call-Implementierungen benötigt, da das Aufrufprotokoll die Rekursionsbehandlung übernimmt.

int Py_EnterRecursiveCall(const char *where)
Teil der Stable ABI seit Version 3.9.

Markiert einen Punkt, an dem ein rekursiver C-Aufruf bevorsteht.

Die Funktion prüft dann, ob das Stapellimit erreicht ist. Wenn dies der Fall ist, wird eine RecursionError gesetzt und ein von Null verschiedener Wert zurückgegeben. Andernfalls wird Null zurückgegeben.

where sollte ein UTF-8-kodierter String sein, wie z. B. " in instance check", der an die RecursionError-Nachricht angehängt wird, die durch das Rekursionstiefenlimit verursacht wird.

Geändert in Version 3.9: Diese Funktion ist jetzt auch in der eingeschränkten API verfügbar.

void Py_LeaveRecursiveCall(void)
Teil der Stable ABI seit Version 3.9.

Beendet einen Py_EnterRecursiveCall()-Aufruf. Muss einmal für jeden erfolgreichen Aufruf von Py_EnterRecursiveCall() aufgerufen werden.

Geändert in Version 3.9: Diese Funktion ist jetzt auch in der eingeschränkten API verfügbar.

Die korrekte Implementierung von tp_repr für Container-Typen erfordert eine spezielle Rekursionsbehandlung. Zusätzlich zum Schutz des Stacks muss tp_repr auch Objekte verfolgen, um Zyklen zu verhindern. Die folgenden beiden Funktionen erleichtern diese Funktionalität. Im Wesentlichen sind dies die C-Äquivalente zu reprlib.recursive_repr().

int Py_ReprEnter(PyObject *object)
Teil der Stable ABI.

Wird zu Beginn der tp_repr-Implementierung aufgerufen, um Zyklen zu erkennen.

Wenn das Objekt bereits verarbeitet wurde, gibt die Funktion einen positiven Integer zurück. In diesem Fall sollte die tp_repr-Implementierung einen String zurückgeben, der einen Zyklus anzeigt. Als Beispiele geben dict-Objekte {...} und list-Objekte [...] zurück.

Die Funktion gibt einen negativen Integer zurück, wenn das Rekursionslimit erreicht ist. In diesem Fall sollte die tp_repr-Implementierung typischerweise NULL zurückgeben.

Andernfalls gibt die Funktion Null zurück und die tp_repr-Implementierung kann normal fortgesetzt werden.

void Py_ReprLeave(PyObject *object)
Teil der Stable ABI.

Beendet einen Py_ReprEnter()-Aufruf. Muss einmal für jeden Aufruf von Py_ReprEnter() aufgerufen werden, der Null zurückgibt.

Ausnahme- und Warnungstypen

Alle Standard-Python-Ausnahmen und Warnungskategorien sind als globale Variablen verfügbar, deren Namen PyExc_ gefolgt vom Python-Ausgabenamen sind. Diese haben den Typ PyObject*; es sind alles Klassenobjekte.

Der Vollständigkeit halber sind hier alle Variablen aufgeführt

Ausnahmetypen

C-Name

Python-Name

PyObject *PyExc_BaseException
Teil der Stable ABI.

BaseException

PyObject *PyExc_BaseExceptionGroup
Teil des Stable ABI seit Version 3.11.

BaseExceptionGroup

PyObject *PyExc_Exception
Teil der Stable ABI.

Exception

PyObject *PyExc_ArithmeticError
Teil der Stable ABI.

ArithmeticError

PyObject *PyExc_AssertionError
Teil der Stable ABI.

AssertionError

PyObject *PyExc_AttributeError
Teil der Stable ABI.

AttributeError

PyObject *PyExc_BlockingIOError
Teil der Stable ABI seit Version 3.7.

BlockingIOError

PyObject *PyExc_BrokenPipeError
Teil der Stable ABI seit Version 3.7.

BrokenPipeError

PyObject *PyExc_BufferError
Teil der Stable ABI.

BufferError

PyObject *PyExc_ChildProcessError
Teil der Stable ABI seit Version 3.7.

ChildProcessError

PyObject *PyExc_ConnectionAbortedError
Teil der Stable ABI seit Version 3.7.

ConnectionAbortedError

PyObject *PyExc_ConnectionError
Teil der Stable ABI seit Version 3.7.

ConnectionError

PyObject *PyExc_ConnectionRefusedError
Teil der Stable ABI seit Version 3.7.

ConnectionRefusedError

PyObject *PyExc_ConnectionResetError
Teil der Stable ABI seit Version 3.7.

ConnectionResetError

PyObject *PyExc_EOFError
Teil der Stable ABI.

EOFError

PyObject *PyExc_FileExistsError
Teil der Stable ABI seit Version 3.7.

FileExistsError

PyObject *PyExc_FileNotFoundError
Teil der Stable ABI seit Version 3.7.

FileNotFoundError

PyObject *PyExc_FloatingPointError
Teil der Stable ABI.

FloatingPointError

PyObject *PyExc_GeneratorExit
Teil der Stable ABI.

GeneratorExit

PyObject *PyExc_ImportError
Teil der Stable ABI.

ImportError

PyObject *PyExc_IndentationError
Teil der Stable ABI.

IndentationError

PyObject *PyExc_IndexError
Teil der Stable ABI.

IndexError

PyObject *PyExc_InterruptedError
Teil der Stable ABI seit Version 3.7.

InterruptedError

PyObject *PyExc_IsADirectoryError
Teil der Stable ABI seit Version 3.7.

IsADirectoryError

PyObject *PyExc_KeyError
Teil der Stable ABI.

KeyError

PyObject *PyExc_KeyboardInterrupt
Teil der Stable ABI.

KeyboardInterrupt

PyObject *PyExc_LookupError
Teil der Stable ABI.

LookupError

PyObject *PyExc_MemoryError
Teil der Stable ABI.

MemoryError

PyObject *PyExc_ModuleNotFoundError
Teil der Stable ABI seit Version 3.6.

ModuleNotFoundError

PyObject *PyExc_NameError
Teil der Stable ABI.

NameError

PyObject *PyExc_NotADirectoryError
Teil der Stable ABI seit Version 3.7.

NotADirectoryError

PyObject *PyExc_NotImplementedError
Teil der Stable ABI.

NotImplementedError

PyObject *PyExc_OSError
Teil der Stable ABI.

OSError

PyObject *PyExc_OverflowError
Teil der Stable ABI.

OverflowError

PyObject *PyExc_PermissionError
Teil der Stable ABI seit Version 3.7.

PermissionError

PyObject *PyExc_ProcessLookupError
Teil der Stable ABI seit Version 3.7.

ProcessLookupError

PyObject *PyExc_PythonFinalizationError

PythonFinalizationError

PyObject *PyExc_RecursionError
Teil der Stable ABI seit Version 3.7.

RecursionError

PyObject *PyExc_ReferenceError
Teil der Stable ABI.

ReferenceError

PyObject *PyExc_RuntimeError
Teil der Stable ABI.

RuntimeError

PyObject *PyExc_StopAsyncIteration
Teil der Stable ABI seit Version 3.7.

StopAsyncIteration

PyObject *PyExc_StopIteration
Teil der Stable ABI.

StopIteration

PyObject *PyExc_SyntaxError
Teil der Stable ABI.

SyntaxError

PyObject *PyExc_SystemError
Teil der Stable ABI.

SystemError

PyObject *PyExc_SystemExit
Teil der Stable ABI.

SystemExit

PyObject *PyExc_TabError
Teil der Stable ABI.

TabError

PyObject *PyExc_TimeoutError
Teil der Stable ABI seit Version 3.7.

TimeoutError

PyObject *PyExc_TypeError
Teil der Stable ABI.

TypeError

PyObject *PyExc_UnboundLocalError
Teil der Stable ABI.

UnboundLocalError

PyObject *PyExc_UnicodeDecodeError
Teil der Stable ABI.

UnicodeDecodeError

PyObject *PyExc_UnicodeEncodeError
Teil der Stable ABI.

UnicodeEncodeError

PyObject *PyExc_UnicodeError
Teil der Stable ABI.

UnicodeError

PyObject *PyExc_UnicodeTranslateError
Teil der Stable ABI.

UnicodeTranslateError

PyObject *PyExc_ValueError
Teil der Stable ABI.

ValueError

PyObject *PyExc_ZeroDivisionError
Teil der Stable ABI.

ZeroDivisionError

Hinzugefügt in Version 3.5: PyExc_StopAsyncIteration und PyExc_RecursionError.

Hinzugefügt in Version 3.6: PyExc_ModuleNotFoundError.

Hinzugefügt in Version 3.11: PyExc_BaseExceptionGroup.

OSError-Aliase

Die folgenden sind Kompatibilitätsaliase für PyExc_OSError.

Geändert in Version 3.3: Diese Aliase waren früher separate Exception-Typen.

C-Name

Python-Name

Hinweise

PyObject *PyExc_EnvironmentError
Teil der Stable ABI.

OSError

PyObject *PyExc_IOError
Teil der Stable ABI.

OSError

PyObject *PyExc_WindowsError
Teil der Stable ABI unter Windows seit Version 3.7.

OSError

[win]

Hinweise

[win]

PyExc_WindowsError ist nur unter Windows definiert; schützen Sie Code, der dies verwendet, indem Sie testen, dass das Präprozessor-Makro MS_WINDOWS definiert ist.

Warnungstypen

C-Name

Python-Name

PyObject *PyExc_Warning
Teil der Stable ABI.

Warnung

PyObject *PyExc_BytesWarning
Teil der Stable ABI.

BytesWarning

PyObject *PyExc_DeprecationWarning
Teil der Stable ABI.

DeprecationWarning

PyObject *PyExc_EncodingWarning
Teil der Stable ABI seit Version 3.10.

EncodingWarning

PyObject *PyExc_FutureWarning
Teil der Stable ABI.

FutureWarning

PyObject *PyExc_ImportWarning
Teil der Stable ABI.

ImportWarning

PyObject *PyExc_PendingDeprecationWarning
Teil der Stable ABI.

PendingDeprecationWarning

PyObject *PyExc_ResourceWarning
Teil der Stable ABI seit Version 3.7.

ResourceWarning

PyObject *PyExc_RuntimeWarning
Teil der Stable ABI.

RuntimeWarning

PyObject *PyExc_SyntaxWarning
Teil der Stable ABI.

SyntaxWarning

PyObject *PyExc_UnicodeWarning
Teil der Stable ABI.

UnicodeWarning

PyObject *PyExc_UserWarning
Teil der Stable ABI.

UserWarning

Hinzugefügt in Version 3.2: PyExc_ResourceWarning.

Hinzugefügt in Version 3.10: PyExc_EncodingWarning.