Patch by Toby Dickenson: don't die when an error occurs during string
conversion in an exception, but instead display <unprintable %s
object> where %s is the type name.
diff --git a/Lib/traceback.py b/Lib/traceback.py
index d219340..b733598 100644
--- a/Lib/traceback.py
+++ b/Lib/traceback.py
@@ -166,9 +166,15 @@
s = s + ' '
list.append('%s^\n' % s)
value = msg
- list.append('%s: %s\n' % (str(stype), str(value)))
+ list.append('%s: %s\n' % (str(stype), _some_str(value)))
return list
+def _some_str(value):
+ try:
+ return str(value)
+ except:
+ return '<unprintable %s object>' % type(value).__name__
+
def print_exc(limit=None, file=None):
"""This is a shorthand for 'print_exception(sys.exc_type,