异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置并进行调试。python用异常对象(exception object)来表示异常。遇到错误后会引发异常,如果异常未被处理或捕捉,程序就会用所谓的回溯(traceback)终止执行。
1、raise语句
为了引发异常,可以使用一个类(应该是exception的子类)或者实例参数调用raise语句。使用类时,程序会自动创建类的一个实例。
2、内建异常类
- Exception : 所有异常的基类
- AttributeError : 特征引用或者复制失败时引发
- IOError : 试图打开不存在文件(包括其他情况)时引发
- IndexError : 在使用序列不存在的索引引发
- Key Error : 在使用映射不存在的键时引发
- NameError : 在找不到名字(变量)时引发
- SyntaxError : 在代码为错误形式时引发
- TypeError : 在内建操作或者函数应用于错误类型的对象时引发
- ValueError : 在内建操作或者函数应用与正确类型的对象,但是该对象使用不合适的值时引发
- ZeroDivisionError : 在除法或者模除操作的第二个参数为0时引发
3、自定义异常类型
- Python中也可以自定义自己的特殊类型的异常,英语词性缩写只需要确保从Exception类继承(直接或间接)即可:
4、捕捉异常
- Python中使用try/except关键字来捕捉异常
5、捕捉多个异常
- 如果需要一个块捕捉多个类型异常,那么可以将他们作为元组输出
- 如果需要一个块捕捉多个类型异常,那么可以继续使用except Exception
6、捕获对象
- 记录异常的同时,程序不会中断停止
- 全捕获异常对象,那么使用except中忽略所有的异常类:
- 如果没有异常出现,外加使用else语句实现
设定一个输入正确才break退出的程序:
7、 finally子句
- finally子句和try子句联合使用但是和except语句不同,finally不管try子句内部是否有异常发生,都会执行finally子句内的代码。
- finally常用于关闭文件或者在Socket中。
- finally用于清洗异常
or 继续定义 x=10:
将try与except语句结合,得到捕获异常对象,并最终执行finally语句: