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

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

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)

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

Ответы на вопрос(3)

Ваш ответ на вопрос