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