try:
f = open(filename,mode)
except IOError,msg:
pass
finally:
f.close();
1,如果在运行时发生异常的话,解释器会查找相应的处理语句(称为handler)
2,要是在当前函数里没有找到的话,他会将异常传递给上层调用的函数,看看那里能不能处理
3,如果在最外层(全局‘main’)还是没有找到的话,解释器就会退出,同时打印出traceback以便让用户找出错误产生的原因
注意:虽然大多数错误会导致异常,但是一个异常不一定代表错误,有时他们只是给一个警告,有时候他们可能是一个终止信号比如退出循环等
finally 语句
Python提供try--finally字句用来表述这样的情况:我们不关心捕捉到是什么错误,无论错误是不是发生,这些代码“必须”运行,比如文件的关闭,释放锁,
把数据库连接返回给连接池等
raise 抛出异常
if 'a'>5:
raise TypeError("something")
python中的异常
AssertionError assert语句失败
AttributeError 试图访问一个对象没有的属性
IOEeeor 输入输出异常,基本是无法打开文件
ImportError 无法引入模块或者包,基本是路径问题
IndentationError 语法错误,代码没有正确的对齐
IndexError 下标索引超出序列边界
KeyError 试图访问你字典里不存在的键
KeyboardInterrupt Ctrl+c被按下
NameError 使用一个还没有赋予对象的变量
SyntaxError Python代码逻辑语法错误,不能执行
TypeError 传入的对象类型与要求不符
UnboundLocalError 试图访问一个还未设置的全局变量,基本上是由于另有一个同名的全局变量,导致你以为在访问
ValueError 传入一个不被期望的值,即使类型正确