Exception handling in Python 3.x

Ethan Furman ethan at stoneleaf.us
Fri Dec 3 15:27:09 EST 2010


Peter Otten wrote:
> Hrvoje Niksic wrote:
> 
>> Peter Otten <__peter__ at web.de> writes:
>>
>>>> Note that StopIteration is an internal detail of no relevance whatsoever
>>>> to the caller. Expose this is unnecessary at best and confusing at
>>>> worst.
>>> http://mail.python.org/pipermail/python-list/2010-October/1258606.html
>>> http://mail.python.org/pipermail/python-list/2010-October/1259024.html
>> Both of these involve suppressing the chaining at the wrong place,
>> namely in the outer handler or, worse yet, in the exception display
>> mechanism.  Steven, on the other hand, wants his *inner* handler to
>> express that the original exception was an implementation detail, a
>> business exception such as StopIteration, that is completely irrelevant
>> to the actual exception being raised.  The outer handler is the wrong
>> place to suppress the chaining because it has no way of distinguishing
>> Steven's case from a genuine case of a new exception unexpectedly
>> occurring during handling of the original exception.
> 
> To quote the Rolling Stones: You can't always get what you want. 
> 
> After rereading the original post I still don't get why the workarounds 
> provided in those links aren't worth considering.

For me at least it's a matter of simplicity, clarity, and the Way of the 
Python  ;)

The workarounds are boiler-plate for a fairly common situation, and one 
of the things i _love_ about python is the *lack* of boilerplate.

I think the real question is is there any progress on dealing with the 
Open Issue in the PEP?

     Open Issue: Suppressing Context
     As written, this PEP makes it impossible to suppress '__context__',
     since setting exc.__context__ to None in an 'except' or 'finally'
     clause will only result in it being set again when exc is raised.

     http://www.python.org/dev/peps/pep-3134/

~Ethan~



More information about the Python-list mailing list