Python 如何捕获协同程序StopIteration异常?
我使用python2.7Python 如何捕获协同程序StopIteration异常?,python,coroutine,Python,Coroutine,我使用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异常,但仍会在未被捕获的情况下引发异常 请
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
时,您误解了<代码>停止迭代在生成器函数退出时发出,而不是在产生
表达式期间发出。因此,捕获此信息的唯一方法是在函数之外执行此操作
def printtext():
line = yield
print line
if __name__ == '__main__':
p = printtext()
p.send(None)
try:
p.send('Hello, World')
except StopIteration:
pass
它是由
send
提出的,不是yield
。谢谢。我想我明白了@赖安