我使用python2.7。
def printtext():
try:
line = yield
print line
except StopIteration:
pass
if __name__ == '__main__':
p = printtext()
p.send(None)
p.send('Hello, World')
我 try catch 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
关于python - 如何捕获协程StopIteration异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41710590/