Python中是否有任何方法可以在迭代器/生成器抛出的异常之后继续迭代?像下面的代码一样,是否有任何方法可以跳过ZeroDivisionError并继续循环通过gener()
而不需要执行run()
函数?在python中的迭代器/生成器异常提升后继续
def gener():
a = [1,2,3,4,0, 5, 6,7, 8, 0, 9]
for i in a:
yield 2/i
def run():
for i in gener():
print i
#---- run script ----#
try:
run()
except ZeroDivisionError:
print 'what magick should i put here?'
在这种简单的情况下可能是的。但是如果我们需要一个默认停止迭代的函数,但是我们可以继续处理下一个捕获异常的项目?我们应该有一个外部信号,说明有什么不对。 – sergzach
@sergzach:我们可以做'yield None'而不是'pass',并在调用者中捕获这个特殊情况。 –