Python 3基础教程 第6章异常处理
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.3.1 异常类的超类
• 所有异常类独有共同的超类:
– BaseException – Exception。
1. BaseException类
• BaseException类是所有异常类的顶级超类 。不能直接继承BaseException类来定义自 己的异常类。
• BaseException类的唯一子类是Exception类 。BaseException类为子类提供了默认的打 印和状态保持行为。
6.1.6 捕捉所有异常
• 在捕捉异常时,如果except语句中没有指明异常类型,则 不管发生何种类型的异常,均会执行except语句块中的异 常处理代码。
6.1.7 异常处理结构的嵌套
• Python允许在异常结构处理的内部嵌套另一个异常处理结 构。在发生异常时,内部没有捕捉处理的异常可以被外层 捕捉。
– 终极行为:在try语句中使用finally定义终极行为,不管程序中是 否发生异常,finally部分的代码都会执行。例如,在读写文件时 ,用finally定义文件关闭操作。
– 利用异常处理实现非常规的流程控制。使用raise语句在代码中根 据需要,主动抛出内置异常或者是自定义的异常,实现程序的流程 跳转。
引发的异常。
• ZeroDivisionError:除数为0时引发的异常。
6.1.4 捕捉多个异常
• 在异常处理结构中,可以使用多个except语句,已捕捉可能 出现的多种异常。例如:
6.1.5 except…as与统一处理
• 可以在except语句中同时指定多种异常,以便使用相同的 异常处理代码进行统一处理。在except语句中可以使用as 为异常类创建一个实例对象。
Python 3基础教程
主讲:授课教师 姓名 出版社或系部名称
6.1 Python异常处理机制
异常处理是Python的一种高级工具,当异常发生时,程序会停止当前的 所有工作,跳转到异常处理部分去执行。异常既可以是程序错误引发的,也 可以是由代码主动触发。
本节主要讲述:
– 为什么使用异常处理 – 异常处理基本结构 – 常见异常类型 – 捕捉多个异常 – except…as与统一处理 – 捕捉所有异常 – 异常处理结构的嵌套 – try…finally终止行为
• 在创建异常类实例对象时,可以用一个字符 串作为异常描述信息。在打印异常类实例对 象时,显示异常描述信息。
百度文库
• 在创建异常类实例对象时,可以提供多个参 数。
• 如果子类没有覆盖继承自BaseException类 的构造方法,所有的参数均会以元组的形式 保存在args属性中。例如:
2. Exception类
• Exception类是其他所有Python内置异常类 的超类,除了GeneratorExit、 KeyboardInterrupt和SystemExit。
• 通常用户自定义的异常类均使用Exception 类作为超类。
6.1.1 为什么使用异常处理
• 在Python中,异常处理常用于处理下列情况。
– 错误处理:这是异常处理的典型应用,在程序中捕捉可能发生的错 误,提供处理措施,例如直接忽略、打印错误、写异常日志等等。 Python使用try语句捕捉和处理异常,发生错误时,执行try语句中 的异常处理代码,然后正常执行try语句后面的代码。
本节主要讲述:
– raise语句 – 异常链:异常引发异常 – assert语句
6.2.1 raise语句
• raise语句基本格式如下:
• Python执行raise语句时,会引发异常并传递异常类的实例 对象。
1.用类名引发异常
• raise语句中指定异常类名时,创建该类的 实例对象,然后引发异常。例如:
6.2.3 assert语句
• assert语句在“测试表达式”的值为假时,引发 AssertionError异常,data作为异常描述信息。
• assert语句基本格式如下:
6.3 自定义异常类
自定义异常类可以提供常规异常处理之外的自定义操作,例如,将异常 现象写入文件等等。
本节主要讲述:
– 异常类的超类 – 创建自定义异常类 – 用自定义异常类保存异常日志
• AttributeError:访问对象属性时引发的异常,如属性不 存在或则不支持赋值等。
• EOFError:使用input()函数读文件时,遇到文件结束标志 EOF时发生的异常。文件对象的read()和readline()方法遇 到EOF时返回空字符串,不会引发异常。
• ImportError:导入模块出错引发的异常。
2.用异常类实例对象引发异常
3.传递异常
• 不带参数的raise语句可再次引发刚刚发生 过的异常,其作用就是向外传递异常。例如 :
4.指定异常信息
• 在使用raise语句引发异常时,可以为异常 类指定描述信息。例如:
6.2.2 异常链:异常引发异常
• 可以使用raise…from…语句,使用异常来引发另一个异常 。例如:
6.1.8 try…finally终止行为
• 在异常处理结构中,可以使用finally定义终止行为。不管 try语句块中是否发生异常,finally语句块中的代码都会 执行。例如:
6.2 主动引发异常
并非只有在程序运行出错时才可引发异常,Python允许在代码中使用 raise或assert语句主动引发异常。
6.1.2 异常处理基本结构
• 异常处理的基本结构如下:
• 在处理异常时,将可能引发异常的代码放在try语句块中。 在except语句中指明捕捉处理的异常类型名称,except语 句块中为发生指定异常时执行的代码。else语句块中为没 有发生异常时执行的代码,else部分可以省略。
6.1.3 常见异常类
• IndexError:使用序列对象的下标超出范围时引发的异常 。
• StopIteration:迭代器没有进一步可迭代元素时引发的异 常。
• IndentationError:使用了不正确的缩进时引发的异常。 • TabError:使用Tab键和空格缩进时不一致引发的异常。 • TypeError:在运算或函数调用时,使用了不兼容的类型时