[Python-Dev] PEP 340: Breaking out.

Delaney, Timothy C (Timothy) tdelaney at avaya.com
Fri May 6 04:05:05 CEST 2005


Greg Ewing wrote:

> Seems to me it should be up to the block iterator whether
> a break statement gets caught or propagated, since it's
> up to the block iterator whether the construct behaves
> like a loop or not.
> 
> This could be achieved by having a separate exception
> for breaks, as originally proposed.
> 
> If the iterator propagates the Break exception back out,
> the block statement should break any enclosing loop.
> If the iterator wants to behave like a loop, it can
> catch the Break exception and raise StopIteration
> instead.

In this scenario (and I'm not saying I approve or disapprove) I think
BreakIteration should inherit from StopIteration (thus retaining the
existing PEP 340 semantics if uncaught)::

    Iteration
     |
     +- ContinueIteration
     |
     +- StopIteration
         |
         +- BreakIteration

I think no matter what it would be useful to be able to separate a break
from a stop sometimes, but there are many cases where they are the same
thing.

Tim Delaney


More information about the Python-Dev mailing list