summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS3
-rw-r--r--Python/ceval.c9
2 files changed, 11 insertions, 1 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index f1746b2..5436c25 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 d66d97e..dc1aa52 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;