版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模块六:程序设计基础《Python》《信息技术基础》PWSO06异常处理知识目标1.了解异常的相关概念和类型;2.了解异常的捕获与处理
;3.能够主动抛出异常。学习目标1.养成良好的代码书写习惯。能力目标1.具有团队协作精神和创新意识;2.具备自主学习能力、分析和解决问题的能力。素质目标1任务描述2任务解析3知识链接4任务实施任务6异常处理5能力拓展人机猜拳游戏中要求出拳的范围为1、2、3、4,输入这4个数之外的任何数据都是异常数据,试用异常处理模式完善人机猜拳游戏程序。本程序需要在用户输入数据时加以控制,即如果输入了不符合要求的数据,则抛出异常,要求重新输入数据。这部分内容需要定义异常类,并且需要使用异常处理语句来实现程序控制。异常的概述异常的捕获与处理抛出异常异常处理异常简介1.异常的概念异常是一个事件,该事件可能会在程序执行过程中发生,从而影响程序的正常执行。简单地说,异常就是指程序运行时引发的错误。异常处理是指因为程序执行过程中出错而在正常控制流之外采取的行为。严格地说,语法错误和逻辑错误不属于异常,但是这些错误往往会导致异常。异常简介2.异常的类型Python程序运行出错时产生的每个异常类型都对应一个类,程序运行时出现的异常大多继承自Exception类,Exception类又继承自异常类的基类BaseException。Exception类内置了众多常见的异常类。异常的捕获与处理
(一)使用try-except语句捕获异常1.语法结构try:<可能出错的代码> except异常类型aserror: <捕获异常后执行的代码>2.说明try子句为可能出错的代码,也就是需要被监控的代码;except子句可以指定异常类型,如果指定了异常类型就只对与指定的异常类型匹配的异常进行处理,否则处理try语句捕获的所有异常;except子句中的as关键字用于将捕获到的异常对象赋给as后面的error;except子句的代码为捕获异常后执行的代码。注:error为异常类型对象名,用户可以根据需要命名。异常的捕获与处理
(一)使用try-except语句捕获异常3.try语句的工作方式(1)执行try子句(可能出错的代码)。(2)如果没有异常发生,忽略except子句,try子句执行后结束。(3)如果执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略;如果异常的类型和except之后的异常类型相匹配,那么对应的except子句将被执行。(4)如果一个异常没有与任何except匹配,那么这个异常将会传递给上层的try。异常的捕获与处理
(一)使用try-except语句捕获异常(二)使用try-except-else语句捕获异常1.语法结构try:<可能发生异常的代码>except[异常类型[aserror]]:<发生异常时执行的代码>else:<没有异常时执行的代码>代码如下。num1=int(input("请输入被除数:"))num2=int(input("请输入除数:"))try:result=num1/num2except(ZeroDivisionError,ValueError)aserror:print("出错了,原因:",error)else:print("两个数相除的结果为:",result)输入除数为0时运行结果如下。请输入被除数:56请输入除数:0出错了,原因:divisionbyzero输入除数为7时运行结果如下。请输入被除数:56请输入除数:7两个数相除的结果为:8.02.说明程序中else后面的语句为没有异常时执行的语句,可以输出两个数相除的结果。异常的捕获与处理
(一)使用try-except语句捕获异常(三)使用try-except-finally语句捕获异常1.语法结构try:<可能发生异常的代码>except[异常类型[aserror]]:<发生异常时执行的代码>finally:<不管有没有异常都会执行的代码>2.说明finally语句为无论是否发生异常都将执行的代码。因此在实际应用程序中,finally语句多用于预设资源的清理操作,如关闭文件、关闭网络连接、关闭数据库连接等。finally语句应用举例如下。num1=int(input("请输入被除数:"))num2=int(input("请输入除数:"))try:result=num1/num2except(ZeroDivisionError,ValueError)aserror: print("出错了,原因:",error)else:print("两个数相除的结果为:",result)finally:print("程序运行完毕!")抛出异常(一)使用raise语句抛出异常使用raise抛出异常有3种格式,下面分别进行介绍。1.使用异常类引发异常语法格式如下。raise异常类 #使用异常类引发指定的异常查看输入“raiseIndexError”的结果。>>>raiseIndexErrorTraceback(mostrecentcalllast):File"<pyshell#9>",line1,in<module>raiseIndexErrorIndexError“raise异常类”语句在执行时会先隐式地创建该语句中异常的实例,然后引发异常。2.使用异常类对象引发异常语法格式如下。raise异常类对象 #使用异常类的对象引发指定的异常查看输入“raiseIndexError()”的结果。>>>raiseIndexError()Traceback(mostrecentcalllast):File"<pyshell#10>",line1,in<module>raiseIndexError()IndexError以上代码中raise之后的“IndexError()”用于创建异常类对象。创建异常类对象时还需通过字符串指定异常的具体信息,语法格式如下。raiseIndexError("索引下标超出范围") #抛出异常及其具体信息查看输入raiseIndexError("索引下标超出范围")的结果。>>>raiseIndexError("索引下标超出范围")File"<pyshell#11>",line1,in<module>raiseIndexError("索引下标超出范围")IndexError:索引下标超出范围3.重新引发异常语法格式如下。raise #重新引发异常使用不带任何参数的“raise”语句可以重新引发刚刚发生过的异常,示例代码及运行结果如下。try:raiseIndexError("索引下标超出范围")except:Raise运行结果如下。Traceback(mostrecentcalllast):File"<pyshell#12>",line2,in<module>raiseIndexError("索引下标超出范围")IndexError:索引下标超出范围抛出异常(二)使用assert语句抛出异常assert语句又称为断言语句,其语法格式如下。assert表达式以上语法格式中的assert后面跟一个表达式,表达式的值为False时触发AssertionError异常,值为True时不做任何操作;表达式之后可以使用字符串来描述异常信息。assert语句可以帮助程序开发者在开发阶段调试程序,以保证程序能够正确运行。下面使用断言语句判断用户输入的除数是否为0,程序代码如下。num1=int(input("请输入被除数:"))num2=int(input("请输入除数:"))assertnum2!=0,"除数不能为0"result=num1/num2print(num1,'/',num2,'=',result)输入0,运行结果如下。AssertionError:除数不能为0一、程序分析1.定义异常类#定义输入异常类classInputError(Exception):"""自定义输入异常类"""def__init__(self,num):self.num=num一、程序分析2.抛出异常类并处理try:fist=input("您选择的出拳方式为:")iffistnotin('1','2','3','4'):raiseInputError(fist)exceptInputErrorasresult:print("\t您输入的是%s,输入错误,请重新输入!!!"%(result.num))continue二、编写代码importrandom#人机猜拳游戏#定义计算机类classComputer:…#定义玩家类classPlayer:…二、编写代码#定义输入异常类classInputError(Exception):"""自定义输入异常类"""def__init__(self,num):self.num=num二、编写代码#定义游戏类classGame:…whileTrue:try:fist=input("您选择的出拳方式为:")iffistnotin('1','2','3','4'):raiseInputError(fist)exceptInputErrorasresult:print("\t您输入的是%s,输入错误,请重新输入!!!"%(result.num))continueplayerfist=int(fist)player.fist(playerfist)…自定义异常的使用定义一个继承Exception类的ShortInputException类,该类中定义了length和atleast两个变量。设计程序时经常要求用户输入密码,通常对密码有长度要求,假设要求密码长度不小于3,小于3则触发异常并出现提示,如果输入长度超过3,则输出“没有异常发生”。在try语句块中,程序按照用户自定义的抛出异常条件选择执行except块语句或者else语句,变量
x
用于创建ShortInputException类的实例。本例中设置password长度小于3,则抛出异常ShortInputException,执行Except语句块,代码如下。自定义异常的使用classShortInputException(Exception):'''自定义异常类'''def__init__(self,length,atleast):Exception.__init__(self)self.length=lengthself.atleast=atleasttry:password=input("请输入密码-->")if(len(password)<3):raiseShortInputException(len(password),3)exceptShortInputException
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论