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块是否抛出异常,永远执行的代码。通常用来执行关闭文件,断开服务器连接的功能等等
点击(此处)折叠或打开
#coding:utf-8
#!/usr/bin/python
# Filename: exception.py
try:
f = open("hello.txt","r") #变量f只在try语句内有效属于局部变量,所以不能放到一下行,因为f.close()还要调用
try:
print f.read(5)
except:
print "读取文件错误"
else:
print "文件读取没有错误"
finally:
print "释放资源"
f.close()
except IOError:
print "文件不存在"
else:
print "代码块将在没有异常被抛出的时候执行:文件存在"
文件不存在