On Tue, Jan 26, 2010 at 02:56:17PM -0600, Shawn Walker wrote:
> On 01/26/10 02:49 PM, [email protected] wrote:
> >On Tue, Jan 26, 2010 at 11:33:40AM -0600, Shawn Walker wrote:
> >>On 01/25/10 07:38 PM, [email protected] wrote:
> >>>Okay.  Here's a webrev that should implement what we discussed earlier
> >>>this afternoon.  Due to the variety of different exception cases
> >>>possible and the different clean-ups needed, the wrapper function is a
> >>>bit more complicated than a simple try/finally, but it seems to work.
> >>>
> >>>   http://cr.opensolaris.org/~johansen/webrev-3720-4/
> >>
> >>I don't believe that the GeneratorExit should be re-raised to the
> >>caller.  My understanding was that the GeneratorExit was
> >>intentionally thrown at the generator itself so that it could do
> >>whatever was needed to abort and handle it without further
> >>assistance.
> >>
> >>Was there a specific reasoning behind doing so instead of just
> >>issuing a "return" or "pass"?
> >
> >According to the documentation, this would be the correct way to handle
> >the exception.  I've verified that calling close() on the generator and
> >re-raising GeneratorExit doesn't leak the exception out to other levels.
> >
> >http://docs.python.org/reference/expressions.html
> >
> >     generator.close()
> >         Raises a GeneratorExit at the point where the generator
> >         function was paused. If the generator function then raises
> >         StopIteration (by exiting normally, or due to already being
> >         closed) or GeneratorExit (by not catching the exception),
> >         close returns to its caller. If the generator yields a
> >         value, a RuntimeError is raised. If the generator raises any
> >         other exception, it is propagated to the caller. close()
> >         does nothing if the generator has already exited due to an
> >         exception or normal exit.
> 
> Ah, sorry I missed that bit.  However, it does imply that if
> GeneratorExit is re-raised, that implies that it wasn't caught.
> Since we actually caught the exception, wouldn't it make sense to
> simply return?

I will give that a try.  This documentation is a unclear. I drew the
opposite conclusion from you: re-raising GeneratorExit is necessary for
.close() to return to its caller.

-j

_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to