[Python-Dev] Exception chaining and generator finalisation (original) (raw)
Antoine Pitrou solipsis at pitrou.net
Sun Aug 1 05:46:46 CEST 2010
- Previous message: [Python-Dev] Exception chaining and generator finalisation
- Next message: [Python-Dev] Exception chaining and generator finalisation
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sun, 01 Aug 2010 13:01:32 +1200 Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
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.
It only happens if you call close() explicitly:
def g(): ... try: yield 1 ... finally: 1/0 ... gi = g() next(gi) 1 del gi Exception ZeroDivisionError: ZeroDivisionError('division by zero',) in <generator object g at 0x7fe50351ddc0> ignored gi = g() next(gi) 1 next(gi) Traceback (most recent call last): File "", line 1, in File "", line 3, in g ZeroDivisionError: division by zero
Regards
Antoine.
- Previous message: [Python-Dev] Exception chaining and generator finalisation
- Next message: [Python-Dev] Exception chaining and generator finalisation
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]