异常抛出机制,为程序开发人员提供了一种在运行时发现错误,进行恢复处理,而后继续执行的能力。下面是一个异常处理实例:python
try: f = open('unfile.py', 'r') except IOError, e: print False,str(e) False [Errno 2] No such file or directory: 'unfile.py'
python提供try-finally子句来表述这样的状况:咱们不关心捕捉到是什么错误,不管错误是否是发生,这些代码“必须”运行,好比文件关闭,释放锁,把数据库链接还给链接池等。好比:数据库
try: f = open('unfile.py', 'r') except Exception, e: print False,str(e) finally: print "exec finally"
使用raise来抛出一个异常:函数
if 'a' > 5: raise TypeError("Error: 'a' must be integer.")
异常 | 描述 |
---|---|
AssertionError | assert语句失败 |
AttributeError | 试图访问一个对象没有的属性 |
IOError | 输入输出异常,基本是没法打开文件 |
ImportError | 没法引入模块或者包,基本是路径问题 |
IndentationError | 语法错误,代码没有正确的对齐 |
IndexError | 下标索引超出序列边界 |
KeyError | 试图访问你字典里不存在的键 |
KeyBoardInterrupt | Ctrl+C被按下 |
NameError | 使用一个还未赋予对象的变量 |
SyntaxError | python代码逻辑语法出错,不能执行 |
TypeError | 传入的对象类型与要求不符 |
UnboundLocalError | 试图访问一个还未设置的全局变量,基本上是因为另有一个同名的全局变量,致使你觉得在访问 |
ValueError | 传入一个不被指望的值,即便类型正确 |