如何防止异常过早地终止Python生成器/迭代器?
例如,考虑以下代码:
#!/usr/bin/env python
def MyIter():
yield 1
yield 2
yield 3
raise Exception, 'blarg!'
yield 4 # this never happens
my_iter = MyIter()
while 1:
try:
value = my_iter.next()
print 'value:',value
except StopIteration:
break
except Exception, e:
print 'An error occurred: %s' % (e,)
我希望得到以下输出结果:
value: 1
value: 2
value: 3
An error occurred: blarg!
value: 4
然而,在发生异常之后,迭代器终止了,并且即使我处理了异常并且没有打破循环,值4也不会被生成。为什么会这样呢?
continue
吗? - heltonbiker