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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage