Обработка исключения, брошенного в генератор
У меня есть генератор и функция, которая его потребляет:
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)
но это выглядит довольно неловко для меня.