我使用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
关于python - 如何捕获协程StopIteration异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41710590/