第十章 错误和异常
Python 中常见的异常:
NameError : 尝试访问一个未申明的变量
ZeroDivissionError : 除数为零
SyntaxError : Python 解释器语法错误
IndexError : 请求的索引超出序列范围
KeyError : 请求一个不存在的字典关键字
IOError : 输入\输出错误
AttributeError : 尝试访问未知的对象属性
KeyboardInterrupt : 中断异常
BaseException : 所有异常的基类
检测和处理异常:try-except 和 try-finally
处理多个异常的时候可以用多个 except,也可以用一个 except,然后将异常放入一个元组 里
不推荐使用空 except 语句
else 子句:try-except-else:在 try 范围内没有异常被检测到时,执行 else 子句
finally 子句: try-except(-else)-finally:无论异常是否发生, 是否捕捉,都会执行的一段代 码。
raise 语句:触发异常。一般语法:
raise [SomeException [,args [,traceback]]]
第一个参数: SomeException:触发异常的名字
第二个参数: args:可选,作为一个对象或者对象的元组传给异常 第三个参数: traceback:可选,很少用
断言:断言是一句必须等价于布尔真的判定,否则将产生 AssertionError (断言错误) 的异 常,同时也说明是假。
语法: assert expression[, arguments]
建议跟 try-except 连用, 将断言语句放在try 中
sys 模块中的 exc_info()函数,通过其提供的一个 3 元组信息同样可以捕捉异常信息: sys.exc_info()得到的元组:
exc_type:异常类
exc_value:异常类的实例
exc_traceback:跟踪记录对象
不过,在未来的 python 中,这三个对象将被逐步停用,并最终移除。