python特性(十):GeneratorExit异常
来源:互联网 发布:什么是网络爬虫 编辑:程序博客网 时间:2024/06/06 05:47
当一个生成器对象被销毁时,会抛出一个GeneratorExit异常。请看下面的代码。
def myGenerator(): try: yield 1 except GeneratorExit: print "myGenerator exited"gen = myGenerator()print gen.next()
输出结果为
1myGenerator exited
上面代码的运行逻辑如下: 当调用到gen.next()方法时,会执行生成器对象方法的yield语句。此后,主程序结束,系统会自动产生一个GeneratorExit异常,被生成器对象方法的Except语句块截获。
而GeneratorExit异常产生的时机,是在生成器对象被销毁之前。为了验证这点,请看下面的代码。
def myGenerator(): try: yield 1 yield 2 except GeneratorExit: print "myGenerator exited"gen = myGenerator()print gen.next()del genprint "Main caller exited"
输出结果
1myGenerator exitedMain caller exited
值得一提的是,GeneratorExit异常只有在生成器对象被激活后,才有可能产生。更确切的说,需要至少调用一次生成器对象的next方法后,系统才会产生GeneratorExit异常。请看下面的代码。
def myGenerator(): try: yield 1 yield 2 except GeneratorExit: print "myGenerator exited"gen = myGenerator()del genprint "Main caller exited"
其输出结果如下:
Main caller exited
在上面的示例中,我们都显式地捕获了GeneratorExit异常。如果该异常没有被显式捕获,生成器对象也不会把该异常向主程序抛出。因为GeneratorExit异常定义的初衷,是方便开发者在生成器对象调用结束后定义一些收尾的工作,如释放资源等。
阅读全文
0 0
- python特性(十):GeneratorExit异常
- python的学习(十)----异常处理(1)
- python学习十(多继承,多态,异常)
- python 语言特性-异常总结(思维导图)
- Python学习系列十:异常处理
- python核心编程(九&十)— 文件和输入输出、错误和异常
- Python特性(十五): context manager的__exit__方法对异常的处理
- python理论学习(十)
- python练习(十)
- javascript学习(十)对象特性
- 学习python的第四十七天-第九章 异常处理
- java学习之十(异常篇)
- 异常处理---SpringMVC学习笔记(十)
- Java基础(十)异常处理
- java学习日志(十)-- 异常
- 异常处理---SpringMVC学习笔记(十)
- python(十一)异常
- Python 异常(Exception)
- JNDI
- Android AutoLayout全新的适配方式 堪称适配终结者
- 工程大小优化之图片资源
- 部分笔记: canvas, permission , softInput , cardview
- Java面向对象的基本概念(对象、封装、继承、多态、抽象、接口、泛型)
- python特性(十):GeneratorExit异常
- Docker常用命令
- opencv3_java 图像的二值图反色处理 Bitwise_not
- latex插入并列图片
- Add Two Numbers
- Java之String类
- 『百词斩』产品分析
- java通过JDBC链接SQLServer2012【转载!!!超详细】
- Swift iOS : 字体图标