[Python-3000] self-contained exceptions

Neil Toronto ntoronto at cs.byu.edu
Thu Jan 4 20:13:51 CET 2007

Guido van Rossum wrote:
> On 1/4/07, Phillip J. Eby <pje at telecommunity.com> wrote:
>> At 01:41 AM 1/4/2007 -0600, Ka-Ping Yee wrote:
>>> How about this?
>>>      except ExcType, e:
>>>          try:
>>>              # body
>>>          finally:
>>>              e = None
>> It's a little bit more difficult to explain in the reference manual.  I was
>> figuring we'd say that the exception variable is bound only in the body of
>> the except clause; saying it becomes None when you exit sounds weirder to
>> me.  How about:
>>       except ExcType, e:
>>           try:
>>               # body
>>           finally:
>>               e = None
>>               del e
>> Then we get the best of all three worlds: a clean explanation, a clean
>> implementation, and a pure source-to-source transformation.
> Great! We need (a) an update to PEP 3100 and (b) a patch to implement
> this. (Once we have this we can talk about the rest of PEP 344;
> perhaps that PEP should also target Py3k only?)

Does it bother anybody that the variable e now has only block scope 
rather than function scope like (almost) every other local? Do the 
benefits outweigh the inconsistency?

One could argue that there's precedent with generator comprehensions 
(also list comprehensions in Py3k), but to me this *looks* more like a 
for loop. As a first-time user I would expect it to behave the same way.


More information about the Python-3000 mailing list