版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章异常《Python程序设计任务驱动教程》学习目标/Target
了解错误和异常,能够说出什么是错误和异常
熟悉异常的类型,能够理解常见异常的含义
掌握try-except语句的使用,能够通过try-except语句捕获程序中的异常
掌握try-except-else语句的使用,能够在else子句中添加没有异常的处理代码学习目标/Target
掌握try-except-finally语句的使用,能够在finally子句中添加释放资源的代码
掌握raise语句的使用,能够在程序中通过raise语句抛出异常
掌握assert断言语句的使用,能够在程序中通过assert语句抛出异常
掌握自定义异常的方法,能够在程序中自定义并使用异常章节概述/Summary程序无论是在编写的过程中,还是在后续的运行时,都可能出现异常。开发人员需要辨别程序的异常,明确这些异常是源于程序本身的设计问题,还是由外界环境的变化引起的,以便有针对性地处理异常。为帮助开发人员便捷地处理异常,Python提供了功能强大的异常处理机制。接下来,本章将通过2个任务对Python中的异常进行讲解。目录/Contents任务10-1反诈查询系统任务10-2模拟网上商城反诈查询系统任务10-1任务描述反诈查询举报判断用户查询的手机号码或网址是否在文件中,若存在于文件中,则提示用户查询的手机号码或网址被标记的次数。将用户举报的内容记录到文件中,若举报的内容已存在,则将标记次数加1,反之则将举报内容添加到文件中,并设置标记次数为1。任务描述本任务要求根据上述描述,编写一个提供反诈查询和举报功能的反诈查询系统,系统中用于查询的可疑手机号或网址文件都存储在info.txt文件中。【任务目标】知识储备了解错误和异常,能够说出什么是错误和异常学习目标1.错误和异常概述知识储备1.错误和异常概述解析错误是指开发人员编写了不符合规范的语法格式引起的错误,它会在编写代码时由编辑器会进行提示。即使使用了正确的语法格式编写代码,在执行代码时仍可能出现错误。程序执行时检测到的错误称为异常。知识储备1.错误和异常概述whileTrueprint("语法格式错误")解析错误示例循环条件的后面缺少冒号print(1/0)异常示例0不能作为除数进行计算知识储备熟悉异常的类型,能够理解常见异常的含义学习目标2.异常类型知识储备2.异常类型Python解释器退出异常用户中断执行时产生的异常内置的、非系统退出的异常的基类生成器退出异常知识储备2.异常类型(1)NameErrorNameError是程序中使用了未定义的变量时会引发的异常。print(name)(2)IndexErrorIndexError是程序越界访问时引发的异常。list_data=[1,2,3,4]print(list_data[5])知识储备2.异常类型(3)AttributeErrorAttributeError是使用对象访问不存在的属性引发的异常。classDog:passdog=Dog()print()(4)FileNotFoundErrorFileNotFoundError是未找到指定文件或目录时引发的异常。file=open("test.txt")Dog类没有定义name属性本地没有test.txt文件知识储备掌握try-except语句的使用,能够通过try-except语句捕获程序中的异常学习目标3.try-except语句知识储备3.try-except语句try:
可能出错的代码except[异常类[as异常信息]]:
捕获异常后的处理代码语法格式执行过程执行try子句中可能出错的代码若try子句中没有产生异常,跳过except子句的代码若产生异常,跳过try子句中出错行及之后的代码,执行except子句的代码321知识储备3.try-except语句(1)捕获单个异常捕获单个异常的方式比较简单,只需要在except之后指定捕获的单个异常类即可。num_one=int(input("请输入被除数:"))num_two=int(input("请输入除数:"))try:print("结果为:",num_one/num_two)exceptZeroDivisionError:print("出错了")我们可以在异常类之后使用关键字as来获取异常的具体信息。num_one=int(input("请输入被除数:"))num_two=int(input("请输入除数:"))try:print("结果为",num_one/num_two)exceptZeroDivisionErroraserror:print("出错了,原因:",error)知识储备3.try-except语句(2)捕获多个异常捕获多个异常的方式也比较简单,只需要在except之后以元组形式指定多个异常类。try:num_one=int(input("请输入被除数:"))num_two=int(input("请输入除数:"))print("结果为",num_one/num_two)except(ZeroDivisionError,ValueError)aserror:print("出错了,原因:",error)(3)捕获全部异常如果要捕获程序中所有的异常,那么可以将except之后的异常类设置为Exception或省略不写。try:num_one=int(input("请输入被除数:"))num_two=int(input("请输入除数:"))print("结果为",num_one/num_two)exceptExceptionase:print("出错了,原因:",repr(e))知识储备掌握try-except-else语句的使用,能够通过else子句处理没有异常的情况学习目标4.try-except-else语句知识储备4.try-except-else语句try:
可能出错的代码except[异常类[as异常信息]]:
捕获异常后的处理代码else:
没有异常的处理代码语法格式first_num=int(input("请输入被除数:"))second_num=int(input("请输入除数:"))try:result=first_num/second_numexceptZeroDivisionErroraserror:print('异常原因:',error)else:print(result)知识储备掌握try-except-finally语句的使用,能够通过finally子句释放程序中的资源学习目标5.try-except-finally语句知识储备5.try-except-finally语句try:
可能出错的代码except[异常类[as异常信息]]:
捕获异常后的处理代码finally:
无论是否出错都会执行的代码语法格式file=open('异常.txt','r')try:file.write("人生苦短,我用Python")exceptExceptionaserror:print("写入文件失败",error)finally:file.close()print('文件已关闭')任务分析反诈查询系统共包含两个功能:反诈查询功能和举报功能,我们可以将这两个功能设计成2个函数,分别是main()和search_report(),其中main()函数用于展示反诈查询系统的功能;search_report()函数用于实现举报或查询用户输入的手机号码或网址。实现思路任务分析1.
search_report()函数(1)search_report()函数接收3个参数,分别是查询或举报的类型(手机号或网址)、查询或举报的数据、执行反炸查询逻辑或举报逻辑的标识参数。(2)我们需要读取info.txt文件中的数据,并使用eval()函数将读取的内容转换为Python中的字典类型。(3)因为search_report()函数接收用户选择的查询/举报类型(手机号或网址),所以我们可以根据传入的查询/举报类型获取字典中所有的手机号码或网址。
实现思路任务分析2.
main()函数main()函数作为程序的入口,用于展示反诈查询系统所包含的功能。当用户选择反诈查询时,会提示用户选择“手机号查询”或“网址查询”,若用户选择“手机号查询”,则调用search_report()函数时将查询的类型和手机号码和标识参数作为参数传入到该函数中,若用户选择“网址查询”,同样会调用search_report()函数并将查询的类型和网址标识参数作为参数传入到该函数中;当用户选择举报功能时,流程与执行反诈查询大致相同,不同之处在于标识参数的值不同。实现思路任务实现1.创建项目Chapter10及01_fraud_query.py文件。2.在01_fraud_query.py文件中编写代码。定义main()函数,用于展示反炸查询系统所包含的功能。定义search_report()函数,用于查询或举报手机号或网址。调用main()函数启动程序。3.运行01_fraud_query.py文件。实现步骤模拟网上商城任务10-2任务描述本任务要求编写代码,实现具有检测商品数量是否符合规则的程序,具体要求如下。(1)顾客可以选购4件商品,分别是五常大米、五丰河粉、农家大米、纯香香油,它们的价格分别是45.0、29.9、45.0和22.9。(2)程序会一直等待用户输入商品名称和商品数量,并对商品数量进行检测。(3)用户输入q后,会输出用户选购的商品名称、数量和总金额。【任务目标】知识储备掌握raise语句的使用,能够在程序中通过raise语句抛出异常学习目标1.raise语句知识储备1.raise语句Python程序中的异常不仅可以自动触发,还可以由开发人员使用raise语句主动引发异常。raise异常类#格式1:使用异常类名引发指定的异常raise异常类对象 #格式2:使用异常类的对象引发指定的异常raise #格式3:使用刚出现过的异常重新引发异常语法格式第1种格式和第2种格式是对等的,都会引发指定类型的异常,其中第1种格式会隐式创建一个该异常类型的对象,第2种形式是最常见的,它会直接提供一个该异常类型的对象。第3种用于重新引发上下文中捕获的异常,或默认引发RuntimeError异常。知识储备1.raise语句(1)使用异常类名引发指定的异常raiseIndexError(2)使用异常类的对象引发指定的异常raiseIndexError()raiseIndexError('索引下标超出范围') #引发异常及其具体信息隐式地创建IndexError类的实例显式地创建IndexError类的实例知识储备1.raise语句(3)使用上下文中捕获的异常对象重新引发异常,或默认引发Runtime
Error异常try:raiseIndexError('索引下标超出范围')except:raise再次引发刚刚发生的IndexError异常知识储备掌握assert断言语句的使用,能够在程序中通过assert语句抛出异常学习目标2.assert断言语句知识储备2.assert断言语句assert断言语句用于判定一个表达式是否为真,如果表达式的值为True,不做任何操作,否则引发AssertionError异常。assert表达式[,异常信息]语法格式表达式后面的异常信息是可选项,它通常会通过字符串的形式说明引发异常的原因。知识储备2.assert断言语句num_one=int(input("请输入被除数:"))num_two=int(input("请输入除数:"))assertnum_two!=0,'除数不能为0'result=num_one/num_twoprint(num_one,'/',num_two,'=',result)示例如果保证代码能够正确执行,那么可以不用在程序中使用assert断言语句。知识储备掌握自定义异常的方法,能够在程序中使用自定义的异常学习目标3.自定义异常知识储备3.自定义异常Python中定义了大量的异常类,虽然这些异常类可以描述编程时出现的绝大部分错误情况,但仍难以涵盖所有可能出现的异常。Python允许开发人员自定义异常。知识储备3.自定义异常txt_file.txt文件的内容自定义异常的方式比较简单,我们只需要定义一个表示异常的类,让它继承Exception类或其它异常类即可。自定义异常类与普通类一样,也可以具有自己的属性和方法,但一般情况下不添加或者只为其添加几个用于描述异常的详细信息的属性即可。classCustomError(Exception):pass#pass表示空语句自定义异常try:raiseCustomError("出现错误")exceptCustomErroraserror:print(error)使用自定义异常知识储备3.自定义异常txt_file.txt文件的内容classFileTypeError(Exception):def__init__(self):self.err='仅支持jpg/png/bmp格式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年伤口换药历年高频考点配套试题及答案
- 2026年湖北高三模拟测试题及答案
- (正式版)T∕UWA 043-2026 基于网络视频总线压缩方案的算显分离系统 业务质量指标与测试方法
- 凝聚态物理专业三博士研究生培养方案
- 业务流程优化方案实施计划模板
- 供应链库存管理数据可视化模板
- 2026年中考化学二模考试卷
- 健康理念传播与行为习惯养成承诺书4篇
- 2023年高三物理一模考试卷
- 2024年中考英语一模考试卷
- 教学查房制度和规范
- 微分几何的考试题及答案
- 道路、停车场施工方案
- 医院医务人员心理疏导谈心制度
- 腹腔镜手术在儿科中的应用前景
- 大家的日语第一课 单词 课件
- 危险化学品无仓储经营责任规章制度及操作规程
- 药店法人委托书样本
- 《可口可乐公关危机》课件
- 飞机舱门及撤离滑梯-空客320型飞机舱门结构及操作方法
- (表13)河南省建设工程竣工验收报告
评论
0/150
提交评论