Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2859662
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Python/Ruby

2013-02-28 20:27:21

  Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。所有异常都从基类Exception继承,而且都在exceptions模块中定义。Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块即可使用异常。一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。如果交互式会话遇到一个未被捕捉的SystemExit异常,会话就会终止

try:
block
except [exception,[data...]]:
   block
else:
   block

finally:

  block

该种异常处理语法的规则是:

·   执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。
·   如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。
·   如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。
·   如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
·   如果没有发生异常,则执行else块代码。

·   finally 无论try块是否抛出异常,永远执行的代码。通常用来执行关闭文件,断开服务器连接的功能等等。

try、except、else

可以在try块里加入else块,代码块将在没有异常被抛出的时候执行:

捕获所有异常

只要在except后面不加任何异常类型,这个except块就可以捕获所有的异常。

except:

finally

无论try块是否抛出异常,永远执行的代码。通常用来执行关闭文件,断开服务器连接的功能等等


点击(此处)折叠或打开

  1. #coding:utf-8
  2. #!/usr/bin/python
  3. # Filename: exception.py

  4. try:
  5.     f = open("hello.txt","r") #变量f只在try语句内有效属于局部变量,所以不能放到一下行,因为f.close()还要调用
  6.     try:
  7.         print f.read(5)
  8.     except:
  9.         print "读取文件错误"
  10.     else:
  11.         print "文件读取没有错误"
  12.     finally:
  13.         print "释放资源"
  14.         f.close()
  15. except IOError:
  16.     print "文件不存在"
  17. else:
  18.     print "代码块将在没有异常被抛出的时候执行:文件存在"


  19. 文件不存在




阅读(1564) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~