我有一个协程(增强生成器)在Python中,其中包含一些在数据结束后执行的代码:
def mycoroutine():
try:
while True:
data = (yield)
print data
finally:
raise ValueError
print "END"
co = mycoroutine()
co.next()
for i in (1,2,3):
co.send(i)
“ValueError”异常不会被触发,但解释器会简单地打印出:
Exception ValueError: ValueError() in <generator object mycoroutine at 0x2b59dfa23d20> ignored
有没有一种方法可以在调用者中捕获异常?
except GeneratorExit:
替换finally
,同样的事情也会发生。我想这是一样的... - ZacValueError
,不是吗?捕获GeneratorExit
并引发另一个异常并不能阻止该异常传播。 - Martijn Pieters__del__
不是一件容易的事情。 - Walter Nissen__repr__
方法,在写入到stderr的Exception ... in [object_repr] ignored错误中识别它们。 - Martijn Pieters