【发布时间】:2014-01-27 02:46:00
【问题描述】:
我在使用 Python 2.7 时遇到问题,生成器引发的异常无法捕获。
由于这种行为,我已经浪费了相当多的时间,两次。
def gen_function():
raise Exception("Here.")
for i in xrange(10):
yield i
try:
gen_function()
except Exception as e:
print("Ex: %s" % (e,))
else:
print("No exception.")
输出:
No exception.
【问题讨论】:
-
调用生成器不会执行任何代码。请改用
next(gen_function())。 -
@Bakuriu:我觉得要回答这个特定的问题有点费劲,不过建议通读一遍
-
还值得阅读Iterators 上的教程部分和生成器的以下部分,它们很好地涵盖了大部分内容(或者至少比你试图弄清楚它所得到的要好)自己通过反复试验)。
-
感谢您的所有回答。我这个白痴,我通常在另一个上下文中遇到这种与生成器相关的问题,所以我没有认识到它。
标签: python exception generator yield