From bf36409e2a8171b441d5e0a2f1c9e02d31a35ae8 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 1 Mar 2006 04:25:17 +0000 Subject: PEP 352 implementation. Creates a new base class, BaseException, which has an added message attribute compared to the previous version of Exception. It is also a new-style class, making all exceptions now new-style. KeyboardInterrupt and SystemExit inherit from BaseException directly. String exceptions now raise DeprecationWarning. Applies patch 1104669, and closes bugs 1012952 and 518846. --- Python/pythonrun.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'Python/pythonrun.c') diff --git a/Python/pythonrun.c b/Python/pythonrun.c index d5c86f2a1f..bbe935297d 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -976,7 +976,7 @@ handle_system_exit(void) fflush(stdout); if (value == NULL || value == Py_None) goto done; - if (PyInstance_Check(value)) { + if (PyExceptionInstance_Check(value)) { /* The error code should be in the `code' attribute. */ PyObject *code = PyObject_GetAttrString(value, "code"); if (code) { @@ -1106,11 +1106,10 @@ void PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) if (err) { /* Don't do anything else */ } - else if (PyClass_Check(exception)) { - PyClassObject* exc = (PyClassObject*)exception; - PyObject* className = exc->cl_name; + else if (PyExceptionClass_Check(exception)) { + char* className = PyExceptionClass_Name(exception); PyObject* moduleName = - PyDict_GetItemString(exc->cl_dict, "__module__"); + PyObject_GetAttrString(exception, "__module__"); if (moduleName == NULL) err = PyFile_WriteString("", f); @@ -1126,8 +1125,7 @@ void PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) if (className == NULL) err = PyFile_WriteString("", f); else - err = PyFile_WriteObject(className, f, - Py_PRINT_RAW); + err = PyFile_WriteString(className, f); } } else -- cgit v1.2.1