[New-bugs-announce] [issue7563] yield in except clause causes exception context to be lost
report at bugs.python.org
Tue Dec 22 20:48:38 CET 2009
New submission from Ronnie Maor <ronnie.maor at gmail.com>:
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> def coroutine():
... raise Exception('bla')
... yield 'foo'
>>> for _ in coroutine():
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in coroutine
TypeError: exceptions must be classes or instances, not NoneType
Seems that yielding in the except clause makes python forget the current
exception, so a bar "raise" statement raises None, instead of the
changing except to except Exception,e: and raise to raise e throws the
original exception, but then the original stack trace is lost.
components: Interpreter Core
title: yield in except clause causes exception context to be lost
versions: Python 2.6
Python tracker <report at bugs.python.org>
More information about the New-bugs-announce