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 f1746b2..5436c25 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -13,7 +13,8 @@
 -----------------
 
 - 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 @@
 			     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;