Make it so TypeError is raised if an instance of an object is put in an
'except' clause.  Also refactor some code to help keep Neal Norwitz happy.
diff --git a/Python/ceval.c b/Python/ceval.c
index fe5de03..5cad632 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3895,23 +3895,8 @@
 	}
 }
 
-/*
-   Return a true value if the exception is allowed to be in an 'except' clause,
-   otherwise return a false value.
-*/
-static int
-can_catch_exc(PyObject *exc)
-{
-	if (!(PyExceptionClass_Check(exc) || PyExceptionInstance_Check(exc))) {
-		PyErr_SetString(PyExc_TypeError,
-				"catching an object must be a class or "
-				"instance of BaseException");
-		return 0;
-	}
-	else {
-		return 1;
-	}
-}
+#define CANNOT_CATCH_MSG "catching classes that do not inherit from"\
+			 "BaseException is not allowed"
 
 static PyObject *
 cmp_outcome(int op, register PyObject *v, register PyObject *w)
@@ -3941,13 +3926,17 @@
 			length = PyTuple_Size(w);
 			for (i = 0; i < length; i += 1) {
 				PyObject *exc = PyTuple_GET_ITEM(w, i);
-				if (!can_catch_exc(exc)) {
+				if (!PyExceptionClass_Check(exc)) {
+					PyErr_SetString(PyExc_TypeError,
+							CANNOT_CATCH_MSG);
 					return NULL;
 				}
 			}
 		}
 		else {
-			if (!can_catch_exc(w)) {
+			if (!PyExceptionClass_Check(w)) {
+				PyErr_SetString(PyExc_TypeError,
+						CANNOT_CATCH_MSG);
 				return NULL;
 			}
 		}