我想捕获一个intetartor在迭代器循环之外的迭代中抛出的异常。
这是代码的非常简化版本:
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
函数,在那里我可以收集错误并继续下一个元素。
此外,我需要处理所有迭代,收集错误并处理所有迭代而不需要错误,以便我可以在最后报告所有错误。这样,单个错误不会阻止所有其他元素的处理。
答案 0 :(得分:0)
使用try-catch块。
try:
for a, b in self._iter():
print(a, b)
except:
#throw your exception text here
答案 1 :(得分:0)
这应该有效:
class C(object):
def _iter(self):
try:
for x in range(100):
yield x, x + 3
except Exception as e:
raise e
def doit(self):
try:
for a, b in self._iter(): # <-- how can I capture an excepcion here?
print(a, b)
except Exception as e:
# do something with e
# rest of the python code here