handle class exceptions
diff --git a/Lib/compileall.py b/Lib/compileall.py
index cd02851..3120284 100644
--- a/Lib/compileall.py
+++ b/Lib/compileall.py
@@ -30,7 +30,10 @@
 					print '\n[interrupt]'
 					break
 				except:
-					print 'Sorry:', sys.exc_type + ':',
+					if type(sys.exc_type) == type(''):
+						exc_type_name = sys.exc_type
+					else: exc_type_name = sys.exc_type.__name__
+					print 'Sorry:', exc_type_name + ':',
 					print sys.exc_value
 		elif maxlevels > 0 and \
 		     name != os.curdir and name != os.pardir and \
diff --git a/Lib/lib-old/tb.py b/Lib/lib-old/tb.py
index 6b9cd9a..0442ba8 100644
--- a/Lib/lib-old/tb.py
+++ b/Lib/lib-old/tb.py
@@ -74,7 +74,10 @@
 		exec(cmd+'\n', globals, locals)
 	except:
 		print '*** Exception:',
-		print sys.exc_type,
+		if type(sys.exc_type) == type(''):
+			print sys.exc_type,
+		else:
+			print sys.exc_type.__name__,
 		if sys.exc_value <> None:
 			print ':', sys.exc_value,
 		print
diff --git a/Lib/tb.py b/Lib/tb.py
index 6b9cd9a..0442ba8 100644
--- a/Lib/tb.py
+++ b/Lib/tb.py
@@ -74,7 +74,10 @@
 		exec(cmd+'\n', globals, locals)
 	except:
 		print '*** Exception:',
-		print sys.exc_type,
+		if type(sys.exc_type) == type(''):
+			print sys.exc_type,
+		else:
+			print sys.exc_type.__name__,
 		if sys.exc_value <> None:
 			print ':', sys.exc_value,
 		print
diff --git a/Lib/traceback.py b/Lib/traceback.py
index 1eec209..5ab3ec6b 100644
--- a/Lib/traceback.py
+++ b/Lib/traceback.py
@@ -3,6 +3,7 @@
 import linecache
 import string
 import sys
+import types
 
 def print_tb(tb, limit = None):
 	if limit is None:
@@ -41,23 +42,29 @@
 		n = n+1
 	return list
 
-def print_exception(type, value, tb, limit = None):
+def print_exception(etype, value, tb, limit = None):
 	if tb:
 		print 'Traceback (innermost last):'
 		print_tb(tb, limit)
-	if value is None:
-		print type
+	if type(etype) == types.ClassType:
+		stype = etype.__name__
 	else:
-		if type is SyntaxError:
+		stype = etype
+	if value is None:
+		print stype
+	else:
+		if etype is SyntaxError:
 			try:
 				msg, (filename, lineno, offset, line) = value
 			except:
 				pass
 			else:
 				if not filename: filename = "<string>"
-				print '  File "%s", line %d' % (filename, lineno)
+				print '  File "%s", line %d' % \
+				      (filename, lineno)
 				i = 0
-				while i < len(line) and line[i] in string.whitespace:
+				while i < len(line) and \
+				      line[i] in string.whitespace:
 					i = i+1
 				s = '    '
 				print s + string.strip(line)
@@ -68,7 +75,7 @@
 						s = s + ' '
 				print s + '^'
 				value = msg
-		print '%s: %s' % (type, value)
+		print '%s: %s' % (stype, value)
 
 def print_exc(limit = None):
 	print_exception(sys.exc_type, sys.exc_value, sys.exc_traceback,