mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-45292: [PEP 654] add the ExceptionGroup and BaseExceptionGroup classes (GH-28569)
This commit is contained in:
parent
4bc5473a42
commit
f30ad65dbf
16 changed files with 1366 additions and 4 deletions
|
@ -14,6 +14,12 @@ typedef struct {
|
|||
PyException_HEAD
|
||||
} PyBaseExceptionObject;
|
||||
|
||||
typedef struct {
|
||||
PyException_HEAD
|
||||
PyObject *msg;
|
||||
PyObject *excs;
|
||||
} PyBaseExceptionGroupObject;
|
||||
|
||||
typedef struct {
|
||||
PyException_HEAD
|
||||
PyObject *msg;
|
||||
|
|
|
@ -205,6 +205,8 @@ struct _Py_exc_state {
|
|||
PyObject *errnomap;
|
||||
PyBaseExceptionObject *memerrors_freelist;
|
||||
int memerrors_numfree;
|
||||
// The ExceptionGroup type
|
||||
PyObject *PyExc_ExceptionGroup;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -93,6 +93,7 @@ extern void _PyAsyncGen_Fini(PyInterpreterState *interp);
|
|||
extern int _PySignal_Init(int install_signal_handlers);
|
||||
extern void _PySignal_Fini(void);
|
||||
|
||||
extern void _PyExc_ClearExceptionGroupType(PyInterpreterState *interp);
|
||||
extern void _PyExc_Fini(PyInterpreterState *interp);
|
||||
extern void _PyImport_Fini(void);
|
||||
extern void _PyImport_Fini2(void);
|
||||
|
|
|
@ -60,11 +60,14 @@ PyAPI_FUNC(const char *) PyExceptionClass_Name(PyObject *);
|
|||
|
||||
#define PyExceptionInstance_Class(x) ((PyObject*)Py_TYPE(x))
|
||||
|
||||
#define _PyBaseExceptionGroup_Check(x) \
|
||||
PyObject_TypeCheck(x, (PyTypeObject *)PyExc_BaseExceptionGroup)
|
||||
|
||||
/* Predefined exceptions */
|
||||
|
||||
PyAPI_DATA(PyObject *) PyExc_BaseException;
|
||||
PyAPI_DATA(PyObject *) PyExc_Exception;
|
||||
PyAPI_DATA(PyObject *) PyExc_BaseExceptionGroup;
|
||||
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
|
||||
PyAPI_DATA(PyObject *) PyExc_StopAsyncIteration;
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue