处理在生成器中抛出的异常

9 浏览
0 Comments

处理在生成器中抛出的异常

我有一个生成器和一个消耗它的函数:

def read():
    while something():
        yield something_else()
def process():
    for item in read():
        do stuff

如果生成器抛出异常,我想在消费者函数中处理它,并继续消耗迭代器直到耗尽。请注意,我不想在生成器中添加任何异常处理代码。

我考虑了以下方法:

reader = read()
while True:
    try:
        item = next(reader)
    except StopIteration:
        break
    except Exception as e:
        log error
        continue
    do_stuff(item)

但我觉得这看起来很笨拙。

0