Czy jest jakiś sposób w Pythonie do kontynuowania iteracji po wyjściu wyjątku przez iterator/generator? Podobnie jak w poniższym kodzie, istnieje sposób na pominięcie ZeroDivisionError i kontynuowanie zapętlenia się przez gener()
bez funkcji modyfikującej run()
?Kontynuuj po podniesieniu wyjątku w iteratorze/generatorze w pythonie
def gener():
a = [1,2,3,4,0, 5, 6,7, 8, 0, 9]
for i in a:
yield 2/i
def run():
for i in gener():
print i
#---- run script ----#
try:
run()
except ZeroDivisionError:
print 'what magick should i put here?'
W tym prostym przypadku prawdopodobnie tak. Ale co jeśli chcemy funkcji, w której iteracja jest domyślnie zatrzymana, ale możemy kontynuować z następnym elementem wychwytującym wyjątek? Powinniśmy mieć zewnętrzny sygnał, że coś jest nie tak. – sergzach
@sergzach: Moglibyśmy zrobić coś w stylu 'yield None' zamiast' pass' i złap ten specjalny przypadek w wywołującego. –