반복자/생성기가 예외를 던진 후에도 반복 수행을 계속할 수있는 방법이 있습니까? 아래 코드와 마찬가지로 ZeroDivisionError를 건너 뛰고 gener()
을 반복하면서 run()
함수를 수정하지 않고도 계속 반복 할 수 있습니까?반복자/생성기에서 파이썬으로 예외 발생 후 계속하십시오.
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?'
아마도이 간단한 경우입니다. 그러나 반복이 기본적으로 중지되는 함수를 원한다면 예외를 catch하는 다음 항목을 계속할 수 있습니까? 우리는 무엇인가 잘못되었다는 외부 신호가 있어야합니다. – sergzach
@sergzach : 우리는'pass' 대신에'yield None'과 같은 것을 할 수 있고 호출자에서 특별한 경우를 잡을 수 있습니다. –