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/2010-August/102603.html below:

[Python-Dev] Exception chaining and generator finalisation

[Python-Dev] Exception chaining and generator finalisationGreg Ewing greg.ewing at canterbury.ac.nz
Sun Aug 1 03:01:32 CEST 2010
While updating my yield-from impementation for Python
3.1.2, I came across a quirk in the way that the new
exception chaining feature interacts with generators.

If you close() a generator, and it raises an exception
inside a finally clause, you get a double-barrelled
traceback that first reports a GeneratorExit, then
"During handling of the above exception, another
exception occurred", followed by the traceback for
the exception raised by the generator.

To my mind, the fact that GeneratorExit is involved
is an implementation detail that shouldn't be leaking
through like this.

Does anyone think this ought to be fixed, and if so,
how? Should GeneratorExit be exempt from being
implicitly set as the context of another exception?
Should any other exceptions also be exempt?

Demonstration follows:

Python 3.1.2 (r312:79147, Jul 31 2010, 21:23:14)
[GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
 >>> def g():
...  try:
...   yield 1
...  finally:
...   raise ValueError("Spanish inquisition")
...
 >>> gi = g()
 >>> next(gi)
1
 >>> gi.close()
Traceback (most recent call last):
   File "<stdin>", line 3, in g
GeneratorExit

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "<stdin>", line 5, in g
ValueError: Spanish inquisition

-- 
Greg
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