From: Guido van Rossum Date: Tue, 18 Mar 2008 04:26:48 +0000 (+0000) Subject: Issue #2341: Add a Py3k warning when raising an exception that doesn't X-Git-Tag: v2.6a2~287 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=504153d55b11aa8f622b6e4baa6a5e94ddfe96e2;p=thirdparty%2FPython%2Fcpython.git Issue #2341: Add a Py3k warning when raising an exception that doesn't derive from BaseException. --- diff --git a/Misc/NEWS b/Misc/NEWS index f1746b2b0998..5436c252130d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -13,7 +13,8 @@ Core and builtins ----------------- - Issue #2371: Add a Py3k warning when catching an exception that - doesn't derive from BaseException. + doesn't derive from BaseException. Issue #2341: Add a Py3k warning + when raising an exception that doesn't derive from BaseException. - Issue #2321: use pymalloc for unicode object string data to reduce memory usage in some circumstances. diff --git a/Python/ceval.c b/Python/ceval.c index d66d97e56bca..dc1aa52eec6e 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -3161,6 +3161,15 @@ do_raise(PyObject *type, PyObject *value, PyObject *tb) type->ob_type->tp_name); goto raise_error; } + + assert(PyExceptionClass_Check(type)); + if (Py_Py3kWarningFlag && PyClass_Check(type)) { + if (PyErr_Warn(PyExc_DeprecationWarning, + "exceptions must derive from BaseException " + "in 3.x") == -1) + goto raise_error; + } + PyErr_Restore(type, value, tb); if (tb == NULL) return WHY_EXCEPTION;