我使用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
例外逃脱了吗?
你对
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