On Sun, 01 Aug 2010 13:01:32 +1200 Greg Ewing <greg.ew...@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 "<stdin>", line 1, in <module> File "<stdin>", line 3, in g ZeroDivisionError: division by zero >>> Regards Antoine. _______________________________________________ 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