[Python-ideas] Revised**7 PEP on Yield-From

Jacob Holm jh at improva.dk
Fri Mar 20 20:32:46 CET 2009


Jacob Holm wrote:
> The "GeneratorExit", I expect due to the description of close in PEP 342:
>
> def close(self):
> try:
> self.throw(GeneratorExit)
> except (GeneratorExit, StopIteration):
> pass
> else:
> raise RuntimeError("generator ignored GeneratorExit")
>
> When the generator is closed (due to the del g lines in the example), 
> this says to throw a GeneratorExit and handle the result. If we do 
> this manually, the throw will be delegated to the iterator, which will 
> print the "Throw: (<type 'exceptions.GeneratorExit'>,)" message.
>

It turns out I was wrong about the GeneratorExit. What I missed is that 
starting from 2.6, GeneratorExit no longer subclasses Exception, and so 
it wouldn't be thrown at the iterator. So move along, nothing to see 
here ... :)

- Jacob



More information about the Python-ideas mailing list