At 08:41 AM 5/13/2005 -0700, Guido van Rossum wrote:
>The 'oke' argument is so that the author of transactional() can decide
>what to do with a non-local goto: commit, rollback or hit the author
>over the head with a big stick.

Since this is just a replacement for a try/except/finally block, I'd expect 
that in a transactional case that a non-local goto would work the same as 
any other non-exception exit.

ISTM that the resource block use cases are:

* Save the current state of something, modify it, and then restore the old 
state once the block completes (try/finally, used for locking, redirection, 
signals, decimal context, etc.)

* Automatically roll back partially-done work in case of exception, and/or 
"roll forward" completed work (try/except/else, used for "transaction" 
scenarios)

* Release allocated resource(s) after use (try/finally, used to close files 
and suchlike)

None of these, AFAICT, benefit from differing behavior in the presence of 
nonlinear (but non-exceptional) control flow.  It just seems too magical to 
me in the new context.  When we were talking about a "block" construct or 
user-defined syntax, it made more sense because you could actually redefine 
the *meaning* of those constructs to some extent -- and because the 
*target* of the break and continue statements at least was the block 
itself, not some containing block.

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to