Behandeln einer Ausnahme in einem generator

Habe ich einen generator und eine Funktion, verbraucht es:

def read():
    while something():
        yield something_else()

def process():
    for item in read():
        do stuff

Wenn der generator löst eine Ausnahme aus, ich will Prozess, der in der Verbraucher-Funktion und dann weiter konsumieren der iterator, bis es erschöpft ist. Beachten Sie, dass ich wollen nicht zu haben, jede exception-handling-code in den generator.

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 sieht aber eher unangenehm für mich.

InformationsquelleAutor georg | 2012-07-06

Schreibe einen Kommentar