我使用的是python2.7。
def printtext():
try:
line = yield
print line
except StopIteration:
pass
if __name__ == '__main__':
p = printtext()
p.send(None)
p.send('Hello, World')
我尝试捕获StopIteration
异常但它仍然被提升而没有被捕获。
你能不能给我一些提示,为什么StopIteration
例外在这种情况下会被转义?
答案 0 :(得分:1)
当StopIteration
被提出时,你会产生误解。生成器函数退出时会引发StopIteration
,而不是yield
表达式。因此,解决这个问题的唯一方法是在函数之外进行...
def printtext():
line = yield
print line
if __name__ == '__main__':
p = printtext()
p.send(None)
try:
p.send('Hello, World')
except StopIteration:
pass