Python程序设计项目化教程课件:异常处理_第1页
Python程序设计项目化教程课件:异常处理_第2页
Python程序设计项目化教程课件:异常处理_第3页
Python程序设计项目化教程课件:异常处理_第4页
Python程序设计项目化教程课件:异常处理_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

异常处理Python程序设计项目化教程目录异常捕获主动抛出异常用户自定义异常Python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。可以使用该功能来调试python程序。

异常处理:语法错误和异常

断言(Assertions):用于判断一个表达式,在表达式条件为false的时候触发异常。应用示例:把一个字符串转换成整型数。int("Hello!")输出结果:ValueErrorTraceback(mostrecentcalllast)~\AppData\Local\Temp\ipykernel_12112\2236278069.pyin<module>---->1int("Hello!")上述示例中就抛出了一个异常,主要是字符串不利用int()转换成整型数。1)捕捉异常可以使用try/except语句。Python中的异常处理机制使用try/except块来捕获和处理异常。try/except块的一般形式如下:异常捕获try:#代码块exceptExceptionType:#异常处理代码块try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。异常捕获如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。当执行try块时,如果发生了类型为ExceptionType的异常,Python解释器会跳过try块的其余代码,转而执行对应的except块的代码。ExceptionType可以是任何异常的基类,或者是具体的异常类型。如果未指定ExceptionType,则所有类型的异常都会被捕获。异常捕获示例:创建一个基于身高和体重计算BMI的函数。先定义一个评价BMI的函数,再定义一个main()函数,提示用户输入身高和体重,打印最终的BMI。main()函数使用try...except...else语句控制流程,如果输入的身高或体重不是数字,将会产生ValueError异常。如果没有产生异常,将会执行else分支,计算BMI指数并评级该结果。。异常捕获defcalculate_bmi(height,weight):"""calculatebodymassindex(BMI)"""returnweight/height**2defevaluate_bmi(bmi):"""evaluatethebmi"""if18.5<=bmi<=24.9:return'healthy'ifbmi>=25:return'overweight'return'underweight'defmain():try:height=float(input('Enteryourheight(meters):'))weight=float(input('Enteryourweight(kilograms):'))exceptValueErroraserror:print(error)else:bmi=round(calculate_bmi(height,weight),1)evaluation=evaluate_bmi(bmi)print(f'Yourbodymassindexis{bmi}')print(f'Thisisconsidered{evaluation}!')main()ValueError:invalidliteralforint()withbase10:'Hello!'异常捕获2)捕捉异常可以使用try…except…else…finally语句Python中可以使用try/except/else/finally块来捕捉和处理异常以及执行异常之外的代码和收尾操作。具体语法如下:异常捕获try:#尝试运行的语句(可能会发生异常,也可能不会发生异常)

<语句>except(异常类型1,异常类型2,...):#如果发生异常类型1时的操作

<语句>else:#如果没有发生异常的操作(可选)

<语句>finally:#不管有没有发生异常都会执行的操作

<语句>try块中包含可能引发异常的代码,如果在执行try块中的代码时出现了异常,Python将跳过try块中剩余的代码,并执行相应的except块中的代码。else块包含发生任何异常时要执行的代码,而finally块中包含无论是否发生异常都要执行的代码。异常捕获try:num1=int(input("Enterthefirstnumber:"))num2=int(input("Enterthesecondnumber:"))result=num1/num2exceptZeroDivisionError:print("Error:Cannotdividebyzero")exceptValueError:print("Error:Invalidinput")else:print(f"Theresultis{result}")finally:print("Programexecutioncomplete.")异常捕获示例中,将用户输入的两个整数相除并打印结果。如果用户输入的第二个数字是零或无法转换为整数,则会引发异常,并在相应的except块中处理异常。如果没有引发任何异常,则会在else块中打印结果。无论发生了什么,都会在finally块中打印"Programexecutioncomplete."。需要注意的是,使用try/except/else/finally块时,需要确保finally块中的代码始终都会被执行,无论是否出现异常。异常捕获Python中可以使用raise语句在程序中主动抛出异常,使程序进入异常状态。raise语句的基本语法格式为:raise[exceptionName[(reason)]]其中,exceptionName和reason为均可选参数,前者的作用是指定抛出的异常名称,后者为异常信息的相关描述。 如果可选参数全部省略,则raise会把当前错误原样抛出 如果仅省略(reason),则在抛出异常时,将不附带任何的异常描述信息也就是说,raise语句有如下三种常用的用法:

raise:单独一个raise。该语句引发当前上下文中捕获的异常(比如在except块中),或默认引发RuntimeError异常。

raiseexceptionName:raise后带一个异常类名称,表示引发执行类型的异常。raiseexceptionName(reason):在引发指定类型的异常的同时,附带异常的描述信息。主动抛出异常try:num=input("请输入一个数字:")ifnotnum.isdigit():raiseelse:print(f"输入为:{num}")exceptRuntimeErrorase:print(f"异常[{e}]触发")#不指定except需捕获的异常try:num=input("请输入一个数字:")ifnotnum.isdigit():raiseelse:print(f"输入为:{num}")except:print(f"异常触发")#但这样我们就不知道具体是什么异常发生了!"""

请输入一个数字:leovin

异常触发"""主动抛出异常在Python中,用户可以通过继承内置的异常类或其他自定义的异常类来创建自己的异常类,从而实现自定义异常捕捉和处理。用户自定义异常示例:示例:演示了如何创建一个自定义的异常类。classMyError(Exception):"""自定义异常类"""def__init__(self,message):self.message=message示例中,定义了一个名为MyError的自定义异常类,它继承了内置的Exception

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论