[Python-Dev] PEP 310 and exceptions

holger krekel hpk at trillke.net
Sat Apr 23 10:10:41 CEST 2005


On Fri, Apr 22, 2005 at 19:03 -0700, Josiah Carlson wrote:
> hpk at trillke.net (holger krekel) wrote:
> > basically translates to: 
> > 
> >     if hasattr(x, '__enter__'): 
> >         x.__enter__() 
> >     try: 
> >         ... 
> >     except: 
> >         if hasattr(x, '__except__'): x.__except__(...) 
> >         else: x.__exit__()
> >     else: 
> >         x.__exit__()
> 
> Nope...
> 
> >>> def foo():
> ...     try:
> ...         print 1
> ...         return
> ...     except:
> ...         print 2
> ...     else:
> ...         print 3
> ...
> >>> foo()
> 1
> >>> 

doh! of course, you are right.  So it indeeds better translates 
to a nested try-finally/try-except when transformed to python code. 
Nick Coghlan points at the correct ideas below in this thread. 

At the time i was implementing things by modifying ceval.c 
rather than by just a compiling addition, i have to admit. 

cheers, 

    holger


More information about the Python-Dev mailing list