Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7617e05

Browse files
committed
New API PyErr_NewException(name, base, dict) to create simple new exceptions.
1 parent 0474832 commit 7617e05

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

Python/errors.c

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,3 +318,34 @@ PyErr_Format(exception, format, va_alist)
318318
PyErr_SetString(exception, buffer);
319319
return NULL;
320320
}
321+
322+
323+
PyObject *
324+
PyErr_NewException(name, base, dict)
325+
char *name;
326+
PyObject *base;
327+
PyObject *dict;
328+
{
329+
PyObject *nname = PyString_InternFromString(name);
330+
PyObject *ndict = NULL;
331+
PyObject *nbases = NULL;
332+
PyObject *result = NULL;
333+
if (nname == NULL)
334+
return NULL;
335+
if (dict == NULL) {
336+
dict = ndict = PyDict_New();
337+
if (dict == NULL)
338+
goto failure;
339+
}
340+
if (base == NULL)
341+
base = PyExc_Exception;
342+
nbases = Py_BuildValue("(O)", base);
343+
if (nbases == NULL)
344+
goto failure;
345+
result = PyClass_New(nbases, dict, nname);
346+
failure:
347+
Py_XDECREF(nbases);
348+
Py_XDECREF(ndict);
349+
Py_XDECREF(nname);
350+
return result;
351+
}

0 commit comments

Comments
 (0)