Behandeln Sie eine in einem Generator ausgelöste Ausnahme
Ich habe einen Generator und eine Funktion, die ihn verbraucht:
def read():
while something():
yield something_else()
def process():
for item in read():
do stuff
Wenn der Generator eine Ausnahme auslöst, möchte ich diese in der Consumer-Funktion verarbeiten und dann den Iterator so lange verbrauchen, bis er erschöpft ist. Beachten Sie, dass ich keinen Code für die Ausnahmebehandlung im Generator haben möchte.
Ich dachte an etwas wie:
reader = read()
while True:
try:
item = next(reader)
except StopIteration:
break
except Exception as e:
log error
continue
do_stuff(item)
das kommt mir aber eher peinlich vor.