Bug #1531405, format_exception no longer raises an exception if

str(exception) raised an exception.
This commit is contained in:
Neal Norwitz 2006-08-04 04:50:21 +00:00
parent 4b8bd31ef0
commit ff4b63b80f
3 changed files with 51 additions and 5 deletions

View File

@ -130,15 +130,24 @@ def test():
def test_string_exception1(self):
str_type = "String Exception"
err = traceback.format_exception_only(str_type, None)
self.assert_(len(err) == 1)
self.assert_(err[0] == str_type + '\n')
self.assertEqual(len(err), 1)
self.assertEqual(err[0], str_type + '\n')
def test_string_exception2(self):
str_type = "String Exception"
str_value = "String Value"
err = traceback.format_exception_only(str_type, str_value)
self.assert_(len(err) == 1)
self.assert_(err[0] == str_type + ': ' + str_value + '\n')
self.assertEqual(len(err), 1)
self.assertEqual(err[0], str_type + ': ' + str_value + '\n')
def test_format_exception_only_bad__str__(self):
class X(Exception):
def __str__(self):
1/0
err = traceback.format_exception_only(X, X())
self.assertEqual(len(err), 1)
str_value = '<unprintable %s object>' % X.__name__
self.assertEqual(err[0], X.__name__ + ': ' + str_value + '\n')
def test_main():

View File

@ -202,7 +202,12 @@ def format_exception_only(etype, value):
def _format_final_exc_line(etype, value):
"""Return a list of a single line -- normal case for format_exception_only"""
if value is None or not str(value):
try:
printable = value is None or not str(value)
except:
printable = False
if printable:
line = "%s\n" % etype
else:
line = "%s: %s\n" % (etype, _some_str(value))

View File

@ -4,6 +4,38 @@ Python News
(editors: check NEWS.help for information about editing NEWS using ReST.)
What's New in Python 2.5 release candidate 1?
=============================================
*Release date: XX-AUG-2006*
Core and builtins
-----------------
Library
-------
- Bug #1531405, format_exception no longer raises an exception if
str(exception) raised an exception.
Extension Modules
-----------------
Tests
-----
Build
-----
Mac
---
What's New in Python 2.5 beta 3?
================================