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

 更新时间:2014年09月02日 11:56:34   投稿:junjie  
这篇文章主要介绍了python中的五种异常处理机制介绍,本文是Learn Python一书的读书笔记,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

从几年前开始学习编程直到现在,一直对程序中的异常处理怀有恐惧和排斥心理。之所以这样,是因为不了解。这次攻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可以连用,比如自定义异常类。这里不再列出,详情可以参考这本书中的介绍。

相关文章

  • django的model操作汇整详解

    django的model操作汇整详解

    这篇文章主要介绍了django的model操作汇整详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • PyQt5事件处理之定时在控件上显示信息的代码

    PyQt5事件处理之定时在控件上显示信息的代码

    这篇文章主要介绍了PyQt5事件处理之定时在控件上显示信息的代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • django重新生成数据库中的某张表方法

    django重新生成数据库中的某张表方法

    今天小编就为大家分享一篇django重新生成数据库中的某张表方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python max函数中key的用法及原理解析

    Python max函数中key的用法及原理解析

    最近有童鞋向小编求助怎么样找到字符串中出现字数最多的字符呢,其实最简单的处理方法是使用max函数,max()函数用于获得给定的可迭代对象中的最大值,关于Python max函数key用法跟随小编一起通过本文学习下吧
    2021-06-06
  • 使用Python实现一个栈判断括号是否平衡

    使用Python实现一个栈判断括号是否平衡

    栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top)。这篇文章主要介绍了使用Python实现一个栈判断括号是否平衡,需要的朋友可以参考下
    2018-08-08
  • python版学生管理系统

    python版学生管理系统

    这篇文章主要为大家详细介绍了python版学生管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • python实现外卖信息管理系统

    python实现外卖信息管理系统

    这篇文章主要为大家详细介绍了python实现外卖信息管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 浅谈Python程序与C++程序的联合使用

    浅谈Python程序与C++程序的联合使用

    这篇文章主要介绍了浅谈Python程序与C++程序的联合使用,主要包括6中方案,需要的朋友可以参考下
    2015-04-04
  • python-itchat 获取微信群用户信息的实例

    python-itchat 获取微信群用户信息的实例

    今天小编就为大家分享一篇python-itchat 获取微信群用户信息的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 通过Python扫描代码关键字并进行预警的实现方法

    通过Python扫描代码关键字并进行预警的实现方法

    这篇文章主要介绍了通过Python扫描代码关键字并进行预警的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论

?


http://www.vxiaotou.com