当前位置:  编程技术>python

python中的五种异常处理机制介绍

    来源: 互联网  发布时间:2014-10-11

    本文导语:  从几年前开始学习编程直到现在,一直对程序中的异常处理怀有恐惧和排斥心理。之所以这样,是因为不了解。这次攻python,首先把自己最畏惧和最不熟悉的几块内容列出来,里面就有「异常处理」这一项。 《Dive into Python》...

从几年前开始学习编程直到现在,一直对程序中的异常处理怀有恐惧和排斥心理。之所以这样,是因为不了解。这次攻python,首先把自己最畏惧和最不熟悉的几块内容列出来,里面就有「异常处理」这一项。

《Dive into Python》并没有专门介绍异常处理,只是例子中用到的时候略微说明了一下。今天下载《Learn Python》,直接进异常处理这块。这一部分有四章,第一章讲解异常处理的一般使用方法,后面的章节深入地讨论其机制。我目前只看了第一章,先学会用,以后有必要的时候再扩展阅读。

python主要支持五种异常机制,一一列举。

默认的异常处理器

代码如下:

s = 'Hello girl!'
print s[100]
print 'continue'

如果我们没有对异常进行任何预防,那么在程序执行的过程中发生异常,就会中断程序,调用python默认的异常处理器,并在终端输出异常信息。这种情况下,第3行代码不会执行。

try…except

代码如下:

s = 'Hello girl!'
try:
 print s[100]
except IndexError:
 print 'error...'
print 'continue'

程序执行到第2句时发现try语句,进入try语句块执行,发生异常,回到try语句层,寻找后面是否有except语句。找到except语句后,会调用这个自定义的异常处理器。except将异常处理完毕后,程序继续往下执行。这种情况下,最后两个print语句都会执行。

except后面也可以为空,表示捕获任何类型的异常。

try…finally

代码如下:

s = 'Hello girl!'
try:
 print s[100]
finally:
 print 'error...'
print 'continue'

finally语句表示,无论异常发生与否,finally中的语句都要执行。但是,由于没有except处理器,finally执行完毕后程序便中断。这种情况下,倒第2个print会执行,到第1个不会执行。如果try语句中没有异常,三个print都会执行。

assert

代码如下:

assert False,'error...'
print 'continue'

这个语句,先判断assert后面紧跟的语句是True还是False,如果是True则继续执行print,如果是False则中断程序,调用默认的异常处理器,同时输出assert语句逗号后面的提示信息。本例情况下,程序中断,提示error,后面的print不执行。

with…as

代码如下:

with open('nothing.txt','r') as f:
 f.read()
 print 2/0
print 'continue'

我们平时在使用类似文件的流对象时,使用完毕后要调用close方法关闭,很麻烦。这里with…as语句提供了一个非常方便的替代方法:open打开文件后将返回的文件流对象赋值给f,然后在with语句块中使用。with语句块完毕之后,会隐藏地自动关闭文件。

如果with语句或语句块中发生异常,会调用默认的异常处理器处理,但文件还是会正常关闭。

这种情况下,会抛出异常,最后的print不执行。

书中介绍的很详细,除了上面我提到的之外,还有很多有用的附加信息,比如try..except..finally..else可以连用,比如自定义异常类。这里不再列出,详情可以参考这本书中的介绍。


    
 
 

您可能感兴趣的文章:

  • Python类的构造函数,析构函数以及垃圾回收机制详细介绍及代码举例
  • python实现异步回调机制代码分享
  • 跨平台python异步回调机制实现和使用方法
  • Python的垃圾回收机制深入分析
  • python之import机制详解
  • Python 3 Tkinter教程之事件Event绑定处理代码实例
  • C++中的Python字符串处理 pyString
  • Python异常处理基础知识
  • Python图像处理 Mahotas
  • Python 图像处理库 Pillow
  • python处理中文编码和判断编码示例
  • Python 时间处理datetime实例
  • python getopt 参数处理小示例
  • python处理json数据中的中文
  • 学习python处理python编码问题
  • 浅析python 内置字符串处理函数的使用方法
  • python3访问sina首页中文的处理方法
  • 重命名批处理python脚本
  • python读文件逐行处理的示例代码分享
  • Python中针对函数处理的特殊方法
  • python每次处理固定个数的字符的方法总结
  • Python getopt模块处理命令行选项实例
  • python处理文本文件实现生成指定格式文件的方法
  • Python异常处理总结
  • python处理文本文件并生成指定格式的文件
  • 初学python数组的处理代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python之平台独立的调试工具winpdb介绍
  • python基础教程之基本内置数据类型介绍
  • 基于python实现的网络爬虫功能:自动抓取网页介绍
  • easy_install python包安装管理工具介绍
  • python中的深拷贝(deepcopy)和浅拷贝(copy)介绍及代码参考
  • 详细介绍Python语言中的按位运算符
  • python对XML的解析方法(SAX,DOM,ElementTree)介绍
  • python strip()函数 介绍
  • python 多线程应用介绍
  • Python sys.path详细介绍
  • python基础教程之缩进介绍
  • python的id()函数介绍
  • python基础教程之基本数据类型和变量声明介绍
  • Python 变量类型及命名规则介绍
  • python进阶教程之模块(module)介绍
  • python基础教程之循环介绍
  • Python中条件选择和循环语句使用方法介绍
  • python基础教程之自定义函数介绍
  • python中的内置函数getattr()介绍及示例
  • python 装饰器功能以及函数参数使用介绍
  • Python读取图片EXIF信息类库介绍和使用实例
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 让python同时兼容python2和python3的8个技巧分享
  • Python不使用print而直接输出二进制字符串
  • 使用setup.py安装python包和卸载python包的方法
  • Python中实现json字符串和dict类型的互转
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • python异常信息堆栈输出到日志文件
  • Python开发者社区整站源码 Pythoner
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • python读取csv文件示例(python操作csv)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3