[ python-Bugs-1531405 ] format_exception raises if str(exception) raises

SourceForge.net noreply at sourceforge.net
Fri Aug 4 06:50:59 CEST 2006


Bugs item #1531405, was opened at 2006-07-30 14:06
Message generated for change (Comment added) made by nnorwitz
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1531405&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: Python 2.5
>Status: Closed
>Resolution: Fixed
Priority: 9
Submitted By: Jp Calderone (kuran)
Assigned to: Neal Norwitz (nnorwitz)
Summary: format_exception raises if str(exception) raises

Initial Comment:
Previously format_exception_only used _some_str() to
find the string representation of an exception.  In
current trunk at HEAD that code has been factored into
_format_final_exc_line and changed in two ways: it now
calls str(exception) twice instead of once and in one
of those cases, it calls str() directly rather than
through _some_str, which does exception handling.

The end result of this is that application-level code
which uses the traceback module to format exceptions
which previously could not raise exceptions now can
raise exceptions.


----------------------------------------------------------------------

>Comment By: Neal Norwitz (nnorwitz)
Date: 2006-08-03 21:50

Message:
Logged In: YES 
user_id=33168

Committed revision 51079.


----------------------------------------------------------------------

Comment By: Georg Brandl (gbrandl)
Date: 2006-08-02 23:13

Message:
Logged In: YES 
user_id=849994

I have a fix and will apply as soon as trunk is unfrozen.

----------------------------------------------------------------------

Comment By: Jp Calderone (kuran)
Date: 2006-08-02 15:55

Message:
Logged In: YES 
user_id=366566

I don't think those are related.  To clarify, this is the
case I am talking about:

Python 2.5b2 (trunk:50989, Jul 30 2006, 15:42:25) 
[GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>> class X:
...     def __str__(self): 1/0
... 
>>> import traceback
>>> traceback.format_exception_only(X, X())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File
"/home/exarkun/Projects/python/trunk/Lib/traceback.py", line
179, in format_exception_only
    return [_format_final_exc_line(stype, value)]
  File
"/home/exarkun/Projects/python/trunk/Lib/traceback.py", line
205, in _format_final_exc_line
    if value is None or not str(value):
  File "<stdin>", line 2, in __str__
ZeroDivisionError: integer division or modulo by zero
>>> 

Compare this to the Python 2.4 output:

Python 2.4.3 (#2, Apr 27 2006, 14:43:58) 
[GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>> class X:
...      def __str__(self): 1/0
... 
>>> import traceback
>>> traceback.format_exception_only(X, X())
['X: <unprintable instance object>\n']
>>> 


----------------------------------------------------------------------

Comment By: Jim Jewett (jimjjewett)
Date: 2006-08-02 15:13

Message:
Logged In: YES 
user_id=764593

Jp -- is this the same issue as 1515163 (patch 1515343)?  
If so, it should be cleared up in the traceback.py from 
head.  Could you doublecheck?



----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1531405&group_id=5470


More information about the Python-bugs-list mailing list