]> granicus.if.org Git - python/commitdiff
New API PyErr_NewException(name, base, dict) to create simple new exceptions.
authorGuido van Rossum <guido@python.org>
Tue, 16 Sep 1997 18:43:50 +0000 (18:43 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 16 Sep 1997 18:43:50 +0000 (18:43 +0000)
Python/errors.c

index 91c543d0fa7582d4272c2e8139749d95a1531cc7..31d9cdff8b2f3a7c7ab9be4ee7d4610445d15c02 100644 (file)
@@ -318,3 +318,34 @@ PyErr_Format(exception, format, va_alist)
        PyErr_SetString(exception, buffer);
        return NULL;
 }
+
+
+PyObject *
+PyErr_NewException(name, base, dict)
+       char *name;
+       PyObject *base;
+       PyObject *dict;
+{
+       PyObject *nname = PyString_InternFromString(name);
+       PyObject *ndict = NULL;
+       PyObject *nbases = NULL;
+       PyObject *result = NULL;
+       if (nname == NULL)
+               return NULL;
+       if (dict == NULL) {
+               dict = ndict = PyDict_New();
+               if (dict == NULL)
+                       goto failure;
+       }
+       if (base == NULL)
+               base = PyExc_Exception;
+       nbases = Py_BuildValue("(O)", base);
+       if (nbases == NULL)
+               goto failure;
+       result = PyClass_New(nbases, dict, nname);
+  failure:
+       Py_XDECREF(nbases);
+       Py_XDECREF(ndict);
+       Py_XDECREF(nname);
+       return result;
+}