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