说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
当一个 generator 或 coroutine 被关闭时将被引发,即当一个生成器对象被销毁时,会抛出一个GeneratorExit异常。可以参见 generator.close() 和 coroutine.close()。 它直接继承自 BaseException 而不是 Exception,因为从技术上来说它并不是一个错误。
参考以下代码:
def my_gen():
try:
yield 1
except GeneratorExit:
print('GeneratorExit raise!')
gen = my_gen()
next(gen)
# GeneratorExit raise!
这段代码是一个简单的生成器函数(generator function)示例。让我解释一下:
至此,生成器函数暂停并等待进一步的调用。如果再次调用 next(gen),生成器函数会从上次暂停的地方继续执行,直到遇到下一个 yield 或者函数结束。
在这个例子中,如果你尝试调用 gen.close(),会触发 GeneratorExit 异常,但是这个异常在 try 块中被捕获,并输出 'GeneratorExit raise!'。这是一种在生成器关闭时执行清理操作的方式。
更新时间:2024-04-06 09:43:25 标签:python 异常 协程