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

转载 2016年08月28日 15:36:35


从几年前开始学习编程直到现在,一直对程序中的异常处理怀有恐惧和排斥心理。之所以这样,是因为不了解。这次攻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的异常处理机制

本菜鸟在用flask后台开发的时候经常会遇到异常管理机制的问题,例如登陆密码不匹配,没有输入等等。借此来学习一下python的异常管理机制。 1、try...except try...excep...
  • bigzhao_25
  • bigzhao_25
  • 2016年04月29日 20:36
  • 694

Python异常处理机制

博客核心内容:1.常见的异常类型 2.异常处理机制 3.异常处理方法 4.try………catch到底什么时候用(一)Python中常见的异常类型AttributeError 试图访问一个对象没有...
  • a2011480169
  • a2011480169
  • 2017年06月28日 12:57
  • 627

python 五种异常处理机制

转自:http://www.jb51.net/article/54638.htm 这篇文章主要介绍了python中的五种异常处理机制介绍,本文是Learn Python一书的读书笔记,需要的朋友...
  • u013636377
  • u013636377
  • 2016年02月24日 17:10
  • 983

JAVA异常机制介绍/如何正确的进行JAVA异常处理

1. 课前练习 在阅读本文的内容之前,请从下面这段代码中找出异常处理有哪些不正确的地方。如果不能找出至少两处错误,说明你还是一个“菜鸟”,对JAVA的异常处理机制还不够了解,需要仔细阅读本文的内容,...
  • likika2012
  • likika2012
  • 2013年07月26日 17:16
  • 1715

JAVA中的异常处理机制及异常分类

JAVA的异常处理机制:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的...
  • sinat_36713319
  • sinat_36713319
  • 2017年04月01日 16:18
  • 3441

什么是异常? 在什么情况用异常处理机制?

什么事异常????     异常(exception) 是程序运行过程中发生的事件,  该事件可以中断程序指令的正常执行流程.   异常的处理机制(重点) 1当JAVA程序运行时出现问题时,系...
  • woshi2512901978
  • woshi2512901978
  • 2013年01月17日 23:02
  • 5618

深入理解java异常处理机制

demo1:package test.java.example; /** * Created by hejingyuan on 2016/5/2. */ public class TestCat...
  • hejingyuan6
  • hejingyuan6
  • 2016年05月02日 16:59
  • 4435

c++异常处理机制示例及讲解

原文链接:http://ticktick.blog.51cto.com/823160/191881 下面的代码直接贴到你的console工程中,可以运行调试看看效果,并分析c++的异常机制。 ...
  • u013727453
  • u013727453
  • 2015年04月24日 15:30
  • 1775

Java中的异常处理机制的简单原理?

答:    1:java常见异常架构图          1、  粉红色的是受检查异常(checked exception),其必须被try{}catch语句块所捕获,或者在方法签名里通过t...
  • goutiantian
  • goutiantian
  • 2015年10月28日 00:34
  • 1158

深入理解C++中的异常处理机制

异常处理 增强错误恢复能力是提高代码健壮性的最有力的途径之一,C语言中采用的错误处理方法被认为是紧耦合的,函数的使用者必须在非常靠近函数调用的地方编写错误处理代码,这样会使得其变得笨拙和难以使用。C...
  • u013982161
  • u013982161
  • 2016年11月06日 12:35
  • 835
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python中的五种异常处理机制介绍
举报原因:
原因补充:

(最多只允许输入30个字)