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',並在調用者中捕獲這個特殊情況。 –