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.