Python 捕获for语句中的异常

Python 捕获for语句中的异常,python,exception,iterator,Python,Exception,Iterator,我想捕获Intestartor在其迭代过程中在迭代器循环之外抛出的异常 这是一个非常简化的代码版本: 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?

我想捕获Intestartor在其迭代过程中在迭代器循环之外抛出的异常

这是一个非常简化的代码版本:

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)
C类(对象):
def_iter(自身):
对于范围(100)内的x:
收益率x,x+3
def doit(self):
对于self中的a,b._iter():#使用try-catch块

try:
  for a, b in self._iter():
    print(a, b)

except:
  #throw your exception text here
这应该起作用:

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
C类(对象):
def_iter(自身):
尝试:
对于范围(100)内的x:
收益率x,x+3
例外情况除外,如e:
提高e
def doit(self):
尝试:

对于self中的a,b。_iter():#为什么不处理
\u iter()
实例方法中的错误?@F.C.在捕获并处理错误后,是否要继续对self中的a,b。_iter():
进行循环?我是唯一一个这样解释它的人吗?@jonrsharpe,因为在
\u iter
内部,我无法收集所有错误,而且
\u iter
必须返回
doit
可以使用的东西。@Nabla这就是问题所在,我想收集所有的错误,处理所有的迭代,不出现错误,并在最后报告错误。@Nabla谢谢,如果愿意,请标记为重复。如果发生异常,这将结束生成器,而OP希望继续。这不是OP要求的:
在这里我可以收集错误并继续下一个元素。