我使用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异常会转义吗?
发布于 2017-01-18 10:54:03
你误解了StopIteration是什么时候被引发的。StopIteration在生成器函数退出时引发,而不是在yield表达式期间引发。因此,捕获它的唯一方法是在函数之外执行...
def printtext():
line = yield
print line
if __name__ == '__main__':
p = printtext()
p.send(None)
try:
p.send('Hello, World')
except StopIteration:
passhttps://stackoverflow.com/questions/41710590
复制相似问题