Python 捕获for语句中的异常
我想捕获Intestartor在其迭代过程中在迭代器循环之外抛出的异常 这是一个非常简化的代码版本: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?
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要求的:在这里我可以收集错误并继续下一个元素。