我使用函数f
创建生成器,但有时它可能会引发错误。我想两件事情发生在主代码蟒蛇尝试,除了产量组合
- 的
for
环路主块捕获错误 - 在
except
后继续,打印出生成错误(在现实中的索引中的差错可能不会发生索引3)
代码我想出了错误后提出停止。我应该如何执行前面提到的两个功能?非常感谢。
def f(n):
for i in xrange(n):
if i == 3:
raise ValueError('hit 3')
yield i
if __name__ == '__main__':
a = enumerate(f(10))
try:
for i, x in a:
print i, x
except ValueError:
print 'you have a problem with index x'
如果在生成器内部引发异常,我看不到任何方法来恢复该生成器的执行,除非你在生成器内部捕获异常。 – vaultah
目前还不清楚,如果你想继续迭代器内的'for'或'main'中的'for' .... –
我想让main块中的'for'继续。原文编辑。 – nos