要故意出发异常,可以使用raise语句,形式如下:

raise <name>  #manually trigger an exception

raise<name>,<value> #pass extra data to catcher too

raise  #re-raise the most recent excepti

第二种形式可以随着异常传递额外的数据,从而为处理器提供细节。

assert <test>,<data>  #<data>是可选项

if __debug__:

if not <test>:

raise AssertionError, <data>

在2.6及以后的版本中使用 with/as

with expression [as varible]:

with-block

在这里expression会返回一个对象,从而支持环境管理 协议。如果选用as分句,此对象也可返回一个值,赋值给变量名variable。

注意 :variable并非赋值为expression的结果。而varible则是赋值为其他的东西。然后,expression返回的对象可在with-block开始前,先执行启动程序,并且在该代码块完成后,执行中止程序代码,无论代码是否引发异常。

wiht open(r'C:\python\scripts') as myfile:

  1. for line in myfile:
  2. print line
  3. line = line.repalce('spam','SPAM')
  4. ...MORE CODE HERE

with语句的实际工作方式:

1.计算表达式,所得到的对象是环境管理器,他必须有__enter__,__exit__两个方法。

2.环境管理器的__enter__方法会被调用。如果as存在,其返回值赋值给as后面的变量,否则,被丢弃。

3.代码块中嵌套的代码会执行。

4.如果with代码块会引发异常,__exit__(type,value,traceback)方法就会被调用。这些也是由
sys.exec_info返回相同的值。如果此方法返回为假,则异常会重新引发。否则,异常会中止。正常情况下异常是应该被重新引发,这样的话传递到
with语句外。

5.如果with代码块没有引发异常,__exit__方法依然会调用,其type、value以及traceback参数会以None传递。

with/as语句的设计,是为了让必须在程序代码块周围发生的启动和终止活动一定会发生。和try/finally语句(无论异常是否发生其离开动作都会执行)类似,但是with/as有更丰富的对象协议,可以定义进入和离开的动作。

最新文章

  1. iOS的生命周期
  2. IDEA Generating project in Batch mode
  3. db2简单语句记录
  4. 常用meta标签举例说明
  5. oracle导sql脚本
  6. Jetty 嵌入式开发(实例)
  7. Android Studio 常用快捷键以及设置
  8. asp 下拉框二级联动
  9. TX enqueue DRM
  10. IIS错误解决办法(HTTP Error 500.19 - Internal Server Error)
  11. (转)Uploadify 3.2 参数属性、事件、方法函数详解
  12. MongoDB副本集的搭建
  13. HourRank 19
  14. hdu 5078 Osu! (2014 acm 亚洲区域赛鞍山 I)
  15. 系统uid在1-499的原因
  16. GetSystemInfo()
  17. LeetCode 412 Fizz Buzz 解题报告
  18. NOI-1.3-11-计算浮点数相除的余数
  19. OC中双向链表的实现
  20. 【论文阅读】HydraPlus-Net: Attentive Deep Features for Pedestrian Analysis

热门文章

  1. ABAP 动态内表添加单元格颜色字段
  2. 微信公众平台创建自定义菜单中文编码导致system error
  3. ITextSharp导出PDF表格和图片(C#)
  4. Django模板系统——过滤器
  5. intel显卡笔记本恢复屏幕亮度调整功能
  6. Loadrunner,将http请求返回的中文结果打印出来
  7. 20145318 GDB调试汇编堆栈分析
  8. js严格模式总结(转~)原文地址http://www.cnblogs.com/chayan/p/5793964.html
  9. Android Service完全解析,关于服务你所需知道的一切(下)
  10. js中replace的回调函数使用。