第13章 异常-【千锋教育】Python快乐编程基础入门
2023-03-21
|
29页
|
194人阅读
|
2人下载
教辅
内容正文:
第13章 异常
自定义异常
回溯最后的异常
小案例
异常概述
捕获与处理异常
触发异常
1
异常概念
捕获与处理异常
触发异常
自定义异常
回溯最后的异常
小案例
目 录
CATALOUGUE
初心至善 匠心育人
01
02
04
05
03
06
2
理解异常的概念
掌握自定义异常
掌握异常的处理
掌握触发异常
学 习 目 标
LEARNING OBJECTIVES
初心至善 匠心育人
13.1
异常概述
初心至善 匠心育人
13.1 异常概念
13.1.1 异常的概念
在生活中,使用计算机中的某个应用软件时,由于某种错误,可能会引发异常,如图所示。
在程序中,当Python检测到一个错误时,解释器就会指出当前流程已无法继续执行下去,这时就出现了异常。例如,使用print()函数输出一个未定义的变量值,具体如下所示:
初心至善 匠心育人
13.1 异常概念
13.1.1 异常的概念
在Python程序中,如果出现异常,而异常对象并未被捕获或处理,程序就会用自动回溯,返回一种错误信息,并终止执行,上述语句返回的错误信息如下:
上述信息提示name变量名未定义,NameError为Python的内建异常类。异常是指因为程序出错而在正常控制流以外采取的行为,即异常是一个事件,该事件可能会在程序执行过程中发生并影响程序的正常执行。
初心至善 匠心育人
13.1 异常概念
13.1.2 异常类
Python为了区分不同的异常,其中内置了许多异常类,常见的异常类如表所示。
初心至善 匠心育人
13.1 异常概念
13.1.2 异常类
在表中,BaseException是异常的顶级类,但用户定义的类不能直接继承这个类,而是要继承Exception。Exception类是与应用相关异常的顶层基类,除了系统退出事件类(SystemExit、KeyboardInterrupt和GeneratorExit)之外,几乎所有用户定义的类都应该继承自这个类,而不是BaseException类。
初心至善 匠心育人
13.2
捕获与处理异常
初心至善 匠心育人
13.2 捕获与处理异常
为了防止程序运行中遇到异常而意外终止,开发时应对可能出现的异常进行捕获并处理。Python程序使用try、except、else、finally这4个关键字来实现异常的捕获与处理。
初心至善 匠心育人
13.2 捕获与处理异常
13.2.1 try-except语句
try-except语句可以捕获异常并进行处理,其语法格式如下:
当try语句块中某条语句出现异常时,程序就不再执行try语句块中后面的语句,而是直接执行except语句块,如例所示。
初心至善 匠心育人
13.2 捕获与处理异常
13.2.1 try-except语句
需要注意的是,上例程序只能捕捉except后面的异常类,如果发生其他类型异常,程序依然会终止。例如,运行上例程序,输入ab再回车,则程序出现错误,如图所示。
在图中,错误信息提示字符串类型不能转化为浮点型。为了保证程序正常运行,此时就需要捕获并处理多种异常,其语法格式如下:
初心至善 匠心育人
13.2 捕获与处理异常
13.2.1 try-except语句
在程序中,虽然开发者可以编写处理多种异常的代码,但异常是防不胜防的,很有可能再出现其他异常,此时就需要捕获并处理所有可能发生的异常,其语法格式如下:
如果程序发生了异常,但是没有找到匹配的异常类别,则执行不带任何匹配类型的except语句块。
初心至善 匠心育人
13
13.2 捕获与处理异常
13.2.2 使用as获取异常信息
为了区分不同的异常,可以使用as关键字来获取异常信息,其语法格式如下:
如果程序需要获取多种异常信息,则可以使用如下语法格式:
如果程序需要获取所有异常信息,则可以使用如下语法格式:
所有的异常类都继承自BaseException类,因此上述语句可以获取所有异常信息。
初心至善 匠心育人
14
13.2 捕获与处理异常
13.2.3 try-except-else语句
try-except-else语句用于处理未捕获到异常的情形,其语法格式如下:
如果try语句内出现了异常,则执行except语句块,否则执行else语句块。
接下来演示try-except-else语句的用法,如例所示。
初心至善 匠心育人
15
13.2 捕获与处理异常
13.2.4 try-finally语句
在try-finally语句中,无论try语句块中是否发生异常,finally语句块中的代码都会执行,其语法格式如下:
其中,finally语句块用于清理在try块中执行的操作,如释放其占有的资源(如文件对象、数据库连接、图形句柄等)。
另外,with-as语句可作为tr
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。