Обработка исключения в генераторе

У меня есть генератор и функция, которая его потребляет:

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)

но это выглядит довольно неловко для меня.

45
задан georg 3 September 2014 в 08:19
поделиться