Generators and exceptions (was Re: Stackless Python and Python 2.x)

Aahz Maruch aahz at
Thu Sep 6 20:54:12 CEST 2001

In article <mailman.999758467.20371.python-list at>,
Tim Peters < at> wrote:
>> The part I don't understand (though if I had access to 2.2a2, I could
>> probably test it easily enough) is what happens when you re-enter a
>> generator and trigger an exception (an exception that isn't
>> StopIteration, for any smartasses out there).
>Nothing special:  the exception is caught by the frame or not, and if not
>propagates out of the frame.  Generators do nothing special at all here, and
>since they always return to their immediate invoker, there are no debatable
>issues about *which* frame *to* propagate an uncaught exception (general
>coroutines are muddier in this respect, and general continuations even

Okay, I've re-read PEP 255, and I'm still not clear on what happens with
the following code:

def a():
    yield 1
    raise "foo"
    yield 2

def b():
    return a()

g = b()

(If I've messed up the syntax, please feel free to correct it before
answering; I *think* my intent is clear enough.)
                      --- Aahz  <*>  (Copyright 2001 by aahz at

Hugs and backrubs -- I break Rule 6       
Androgynous poly kinky vanilla queer het Pythonista   

"Plus ca change, plus c'est la meme chose."

More information about the Python-list mailing list