Lidar com uma exceção lançada em um gerador

Eu tenho um gerador e uma função que consome:

def read():
    while something():
        yield something_else()

def process():
    for item in read():
        do stuff

Se o gerador gerar uma exceção, quero processá-lo na função do consumidor e continuar consumindo o iterador até que esteja esgotado. Observe que não quero ter nenhum código de manipulação de exceção no gerador.

Eu pensei em algo como:

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

mas isso parece um pouco estranho para mim.

questionAnswers(3)

yourAnswerToTheQuestion