似乎在生成器上调用throw会产生一种异常。我该如何重新抛出一个异常实例(我已经抓住了)?
编辑: 考虑
def g():
try:
yield 1
except Exception as e:
yield 2
def f():
x = g()
print x.next()
print x.throw(Exception)
但是如何抛出已存在的异常实例?
答案 0 :(得分:4)
generator.throw(...)
的参数完全反映了raise
语句的参数。所以它 不是一个异常类;它可以是一个异常对象,就像raise
一样。
这完全没问题:
x.throw(Exception("i'm an argument"))
诚然,文件对此极具误导性。 The PEP至少给你一个提示:
提出异常的效果与语句完全相同:
raise type, value, traceback
在暂停点被执行。