A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2006-April/063312.html below:

[Python-Dev] SF #1462485 - StopIteration raised in body of 'with' statement suppressed

[Python-Dev] SF #1462485 - StopIteration raised in body of 'with' statement suppressed [Python-Dev] SF #1462485 - StopIteration raised in body of 'with' statement suppressedDelaney, Timothy (Tim) tdelaney at avaya.com
Sun Apr 2 23:47:22 CEST 2006
Discovered this while playing around with the 2.5 released end of last
week.

Given:

@contextmanager
def gen():
    print '__enter__'
    yield
    print '__exit__'

with gen():
    raise StopIteration('body')

I would expect to get the StopIteration exception raised. Instead it's
suppressed by the @contextmanager decorator.

I think we should only suppress the exception if it's *not* the
exception passed into gen.throw() i.e. it's raised by the generator.
Does this sound like the correct behaviour? I've attached tests and a
fix implementing this to the bug report.

I can't confirm right now (at work, need to install 2.5) but I'm also
wondering what will happen if KeyboardInterrupt or SystemExit is raised
from inside the generator when it's being closed via __exit__. I suspect
a RuntimeError will be raised, whereas I think these should pass
through.

Tim Delaney
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4