我想捕獲intetartor在迭代器循環之外迭代中拋出的異常。for語句中的捕獲異常
這是代碼的一個非常簡化的版本:
class C(object):
def _iter(self):
for x in range(100):
yield x, x + 3
def doit(self):
for a, b in self._iter(): # <-- how can I capture an excepcion here?
print(a, b)
我能捕捉到這個循環的異常,但後來我我怎麼能傳遞錯誤的doit
方法報告?我想讓異常一直傳播到doit
函數,我可以收集錯誤並繼續下一個元素。
另外我需要處理所有的迭代,收集錯誤並處理所有的迭代沒有錯誤,所以我可以報告所有的錯誤在最後。這樣,單個錯誤不會阻止處理所有其他元素。
爲什麼不與錯誤處理* *裏面的'_iter()'實例方法? – jonrsharpe
@ F.C。你是否想在self._iter()中爲a,b繼續循環:'在捕獲並處理了一個錯誤之後?我是唯一一個像這樣解釋它嗎? – Nabla
@jonrsharpe因爲'_iter'裏面我不能收集所有的錯誤,並且因爲'_iter'必須返回'doit'可以使用的東西。 –