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.stderraus und löscht die Fehleranzeige. **Es sei denn**, die Exception ist eineSystemExit, in diesem Fall wird kein Traceback ausgegeben und der Python-Prozess wird mit dem Fehlercode beendet, der durch dieSystemExit-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_excauf die ausgegebene Exception gesetzt. Aus Gründen der Abwärtskompatibilität werden auch die veralteten Variablensys.last_type,sys.last_valueundsys.last_tracebackauf den Typ, den Wert und den Traceback dieser Exception gesetzt.Geändert in Version 3.12: Das Setzen von
sys.last_excwurde 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.stderraus, 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
NULList, 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
NULList.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 inPyUnicode_FromFormat().PyErr_WriteUnraisable(obj)ist ungefähr äquivalent zuPyErr_FormatUnraisable("Exception ignored in: %R", obj). Wenn formatNULList, 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
excansys.stderraus, 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. mitPy_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
NULLzurü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 inPyUnicode_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 einva_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 gibtNULLzurück, damit eine Objektzuweisungsfunktionreturn 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
errnogesetzt hat. Sie erstellt ein Tupel-Objekt, dessen erster Eintrag der Ganzzahl-Wert vonerrnound dessen zweiter Eintrag die entsprechende Fehlermeldung (erhalten ausstrerror()) ist, und ruft dannPyErr_SetObject(type, object)auf. Unter Unix, wenn der Wert vonerrnoEINTRist, was einen unterbrochenen Systemaufruf anzeigt, ruft diesPyErr_CheckSignals()auf, und wenn dies die Fehleranzeige gesetzt hat, lässt es sie gesetzt. Die Funktion gibt immerNULLzurück, so dass eine Wrapper-Funktion um einen Systemaufrufreturn 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 nichtNULList, es dem Konstruktor von type als drittes Argument übergeben wird. Im Falle einerOSError-Exception wird dies verwendet, um das Attributfilenameder 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 von0aufgerufen wird, wird stattdessen der von einem Aufruf vonGetLastError()zurückgegebene Fehlercode verwendet. Sie ruft die Win32-FunktionFormatMessage()auf, um die Windows-Beschreibung des durch ierr oderGetLastError()gegebenen Fehlercodes abzurufen, dann erstellt sie einOSError-Objekt mit dem Attributwinerrorauf den Fehlercode gesetzt, dem Attributstrerrorauf die entsprechende Fehlermeldung (erhalten ausFormatMessage()) gesetzt und ruft dannPyErr_SetObject(PyExc_OSError, object)auf. Diese Funktion gibt immerNULLzurü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 nichtNULList, er aus der Dateisystemkodierung (os.fsdecode()) dekodiert und dem Konstruktor vonOSErrorals drittes Argument übergeben wird, um das Attributfilenameder 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 nichtNULList, es dem Konstruktor vonOSErrorals drittes Argument übergeben wird, um das Attributfilenameder 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
ImportErrorauszulösen. msg wird als Nachrichtenzeichenkette der Ausnahme gesetzt. name und path, beides kannNULLsein, werden als die entsprechenden AttributenameundpathderImportErrorgesetzt.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 vonImportErrorzum 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
SyntaxErrorist, werden zusätzliche Attribute gesetzt, die das Ausnahmeausgabesystem dazu veranlassen, die Ausnahme alsSyntaxErrorzu 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, diePyErr_WarnEx()aufruft, 2 ist die Funktion darüber und so weiter.Warnungskategorien müssen Unterklassen von
PyExc_Warningsein;PyExc_Warningist eine Unterklasse vonPyExc_Exception; die Standardwarnungskategorie istPyExc_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-Win 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 aufNULLgesetzt 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 verwendetPyUnicode_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 istResourceWarningund sie übergibt source anwarnings.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 vonPyErr_Restore()). Wenn nicht gesetzt, gibt erNULLzurück. Sie besitzen keine Referenz auf den Rückgabewert, daher müssen Sie ihn nicht mitPy_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
NULLzurü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
NULLgesetzt. Wenn er gesetzt ist, wird er gelöscht und Sie besitzen eine Referenz auf jedes abgerufene Objekt. Der Wert und das Traceback-Objekt könnenNULLsein, 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
NULLsind, wird der Fehlerindikator gelöscht. Übergeben Sie keinenNULL-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.,*excist ein Klassenobjekt, aber*valist 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 oderNULL. 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 SieNULL.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 jedesNULLsein kann. Modifiziert nicht den Zustand der Ausnahmeinformationen. Diese Funktion ist aus Kompatibilitätsgründen beibehalten. Bevorzugen Sie die Verwendung vonPyErr_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 ArgumenteNULL. Diese Funktion ist aus Kompatibilitätsgründen beibehalten. Bevorzugen Sie die Verwendung vonPyErr_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
typeundtracebackwerden nicht mehr verwendet und können NULL sein. Der Interpreter leitet sie nun aus der Ausnahmeinstanz (dem Argumentvalue) 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
0zurück. Wenn jedoch ein Python-Signalhandler eine Ausnahme auslöst, wird die Fehleranzeige gesetzt und die Funktion gibt sofort-1zurück (so dass andere ausstehende Signale möglicherweise noch nicht behandelt wurden: sie werden bei der nächstenPyErr_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
0zurü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
SIGINTlöst dieKeyboardInterrupt-Ausnahme aus.
-
void PyErr_SetInterrupt()¶
- Teil der Stable ABI.
Simuliert die Auswirkung eines eingehenden
SIGINT-Signals. Dies ist äquivalent zuPyErr_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_DFLodersignal.SIG_IGNgesetzt), wird es ignoriert.Wenn signum außerhalb des zulässigen Bereichs von Signalnummern liegt, wird
-1zurückgegeben. Andernfalls wird0zurü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
-1deaktiviert die Funktion; dies ist der Anfangszustand. Dies ist äquivalent zusignal.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 normalerweiseNULL. Dies erstellt ein Klassenobjekt, das vonExceptionabgeleitet ist (in C zugänglich alsPyExc_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 nichtNULList, 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_nameder 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, wirdNULLzurü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, wirdNULLzurü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 durchraise ... 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 oderNoneist. Dies stiehlt eine Referenz auf cause.Das Attribut
__suppress_context__wird von dieser Funktion implizit aufTruegesetzt.
-
PyObject *PyException_GetArgs(PyObject *ex)¶
- Rückgabewert: Neue Referenz. Teil der Stable ABI seit Version 3.12.
Gibt
argsder Ausnahme ex zurück.
-
void PyException_SetArgs(PyObject *ex, PyObject *args)¶
- Teil der Stable ABI seit Version 3.12.
Setzt
argsder 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 denexcept*-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 dieExceptionGroupzurück, die schließlich erneut ausgelöst werden muss, oderNone, 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
NULLsein. Gibt0bei Erfolg,-1bei Misserfolg zurück.Wenn das
UnicodeError.objecteine leere Sequenz ist, ist der resultierende start0. Andernfalls wird es auf[0, len(object) - 1]gekürzt.Siehe auch
-
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
0bei Erfolg,-1bei 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
NULLsein. Gibt0bei Erfolg,-1bei Misserfolg zurück.Wenn das
UnicodeError.objecteine leere Sequenz ist, ist der resultierende end0. 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
0bei Erfolg,-1bei Misserfolg zurück.Siehe auch
-
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
0bei Erfolg,-1bei 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
RecursionErrorgesetzt 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 dieRecursionError-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 vonPy_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 gebendict-Objekte{...}undlist-Objekte[...]zurück.Die Funktion gibt einen negativen Integer zurück, wenn das Rekursionslimit erreicht ist. In diesem Fall sollte die
tp_repr-Implementierung typischerweiseNULLzurü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 vonPy_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 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hinzugefügt in Version 3.3: PyExc_BlockingIOError, PyExc_BrokenPipeError, PyExc_ChildProcessError, PyExc_ConnectionError, PyExc_ConnectionAbortedError, PyExc_ConnectionRefusedError, PyExc_ConnectionResetError, PyExc_FileExistsError, PyExc_FileNotFoundError, PyExc_InterruptedError, PyExc_IsADirectoryError, PyExc_NotADirectoryError, PyExc_PermissionError, PyExc_ProcessLookupError und PyExc_TimeoutError wurden nach PEP 3151 eingeführt.
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 |
|---|---|---|
|
||
|
||
|
Hinweise
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 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hinzugefügt in Version 3.2: PyExc_ResourceWarning.
Hinzugefügt in Version 3.10: PyExc_EncodingWarning.