Python编程基础 课件 8.2 异常处理_第1页
Python编程基础 课件 8.2 异常处理_第2页
Python编程基础 课件 8.2 异常处理_第3页
Python编程基础 课件 8.2 异常处理_第4页
Python编程基础 课件 8.2 异常处理_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

Python编程基础项目八文件与异常处理8.2

异常处理目录8.2.1异常处理基础8.2.2异常处理的基本结构8.2.3异常处理的高级用法8.2.4自定义异常Python编程基础8.2.1异常处理基础Python编程基础一

异常的示例与概念

示例:计算平方根程序importmathn=input("Enter:")n=float(n)#可能出错!print(math.sqrt(n))输入无效数据时textEnter:12aValueError:couldnotconvertstringtofloat:'12a'程序直接崩溃!Python编程基础一、

异常的示例与概念1什么是异常?

异常就是程序在运行过程中发生的错误或意外情况。2什么是异常处理?

当错误发生时,我们不是让程序直接崩溃,而是捕获这个错误,然后采取相应的措施。Python编程基础

二、异常处理语句try/except基本语法try:#可能出错的代码

可能出错的语句except:#出错时执行的代码

处理错误的语句Python编程基础

二、异常处理语句try/except改进后的平方根程序importmathn=input("Enter:")try:a=float(n)print(math.sqrt(a))print("done")except:print(“发生了错误!”)print("程序结束了")#程序继续执行!Python编程基础执行结果:Enter:12a发生了错误!程序结束了程序没有崩溃!

三、异常处理执行流程改进后的平方根程序iprint("start")try:print("divided")n=1/0#这里出错!print("finish")#这行不会执行exceptExceptionaserr:print(err)#输出:divisionbyzeroprint("end")Python编程基础执行过程:执行try块中的语句遇到异常立即跳转至except块try块中剩余语句被跳过执行except块后继续后续代码

四、基础练习

安全的除法器defsafe_calculator():try:a=float(input("请输入第一个数字:"))b=float(input("请输入第二个数字:"))result=a/bprint(f"{a}÷{b}={result}")exceptValueError:print("错误:请输入数字")exceptZeroDivisionError:print("错误:除数不能为零")Python编程基础

五、常见应用场景:文件读写异常处理try:withopen("data.txt","r")asfile:#with语句自动处理文件关闭content=file.read()print(content)exceptFileNotFoundError:print("文件不存在,创建新文件")withopen("data.txt","w")asfile:file.write("这是新文件")exceptPermissionError:print("没有文件访问权限")Python编程基础

六、总结与要点核心语法掌握try/except:捕获和处理异常编程习惯培养对不可靠操作添加异常处理Python编程基础8.2.2异常处理的基本结构Python编程基础一try-except-else语句try:#可能出错的代码...except异常类型:#异常处理代码...else:#没有异常时执行的代码...用途:try:尝试执行可能出错的代码except:捕获并处理异常else:无异常时执行的代码块(可选)二

try-except-finally语句try:#可能出错的代码...except异常类型:#异常处理代码...finally:#无论是否发生异常都会执行的代码#常用于清理资源...用途:finally:无论是否异常都会执行常用于:关闭文件、释放数据库连接等清理工作三

完整结构示例Python编程基础try:file=open("data.txt","r")content=file.read()exceptFileNotFoundError:print("文件不存在")exceptPermissionError:print("没有文件访问权限")exceptExceptionase:print(f"发生未知错误:{e}")else:print("文件读取成功")finally:if'file'inlocals()andnotfile.closed:file.close()print("文件已关闭")四

完整结构解析执行流程:1try:尝试打开并读取文件2except:

FileNotFoundError→

文件不存在

PermissionError→

无权限

Exception→

其他未知异常

3else:无异常

打印“文件读取成功”

4finally:始终执行

确保文件关闭

Python编程基础

五else与finally的区别Python编程基础elsefinally仅在无异常时执行无论是否异常都会执行用于处理正常流程用于资源清理、收尾工作可选可选,但强烈推荐用于资源管理六

使用建议与最佳实践建议

1

使用

多个except块

精准捕获异常2finally中释放资源(文件、连接等)3else中放置正常逻辑,使结构清晰4避免空except(except:),应明确异常

类型原则1明确异常类型2资源及时释放

3结构清晰易读

总结1try-except:基础捕获结构2try-except-else:增加正常逻辑分支3try-except-finally:确保资源清理4完整结构:结合所有部分,实现健壮处理

一句话原则:

精准捕获,明确处理,及时清理Python编程基础8.2.3异常处理的高级用法Python编程基础

一、异常的抛出(raise)基本用法defvalidate_age(age):ifage<0:raiseValueError("年龄不能为负数")ifage>150:raiseValueError("年龄不合理")returnagePython编程基础

一、异常的抛出(raise)使用示例try:validate_age(-5)exceptValueErrorase:print(f"验证失败:{e}")try:validate_age(200)exceptValueErrorase:print(f"验证失败:{e}")Python编程基础raise的作用主动触发异常用于参数验证和业务逻辑检查提供清晰的错误信息遵循"尽早失败"原则使用场景函数参数验证业务规则检查前置条件检查错误状态报告

一、异常的抛出(raise)ValueError值错误try:num=int("abc")#无法转换为整数exceptValueError:print("请输入有效的数字")ZeroDivisionError除零错误try:result=10/0exceptZeroDivisionError:print("除数不能为零")

二、常见异常类型TypeError-类型错误try:result="hello"+123exceptTypeError:print("类型不匹配")IndexError-索引错误try:lst=[1,2,3]print(lst[10])exceptIndexError:print("索引超出范围")

二、常见异常类型FileNotFoundError文件不存在try:withopen("不存在的文件.txt","r")asf:content=f.read()exceptFileNotFoundError:print("文件不存在")

二、常见异常类型

三、异常的捕获方法1:多个except块try:num=int(input("输入数字:"))result=100/numexceptValueError:print("请输入有效的数字")exceptZeroDivisionError:print("除数不能为零")Python编程基础

三、异常的捕获方法2:一个except块捕获多个异常try:try:#可能出错的代码...except(ValueError,TypeError)ase:print(f"输入错误:{e}")Python编程基础

三、异常的捕获方法3:捕获所有异常(谨慎使用)try:#可能出错的代码...exceptExceptionase:print(f"发生错误:{type(e).__name__}:{e}")Python编程基础raise:主动抛出异常常见异常类型:ValueError、TypeError、FileNotFoundError等try-except:捕获和处理异常

四、总结与要点8.2.4自定义异常Python编程基础一、自定义异常的定义核心定义自定义异常是通过继承Python内置的Exception类创建的新异常类型,用于区分特定的业务错误。关键原则1.必须继承Exception类,避免捕获系统级异常(如KeyboardInterrupt)。2.命名应见名知意,如UserNotFoundError。3.可添加文档字符串说明异常用途。基础语法示例#定义基础自定义异常classMyCustomError(Exception):"""这是一个自定义异常的示例"""pass#定义带参数的自定义异常classUserNotFoundError(Exception):def__init__(self,user_id):self.user_id=user_idsuper().__init__(f"用户{user_id}不存在")Python编程基础二、自定义异常的抛出与捕获抛出(Raise)使用raise关键字主动抛出异常。语法:raise异常名(参数)捕获(Catch)使用try...except结构精准捕获。可结合else和finally完善流程。#1.定义异常类classNotLoginError(Exception):pass#2.业务逻辑抛出异常defview_profile():ifnotis_login:raiseNotLoginError("请先登录")#3.捕获并处理异常try:view_profile()exceptNotLoginErrorase:print(f"错误:{e}")Python编程基础三、实战示例:基础用法场景:用户登录验证,密码错误时抛出异常#1.定义带参数的自定义异常classPasswordError(Exception):"""密码错误异常,包含出错的用户ID"""def__init__(self,user_id):self.user_id=user_idsuper().__init__(f"用户{user_id}的密码输入错误")#2.业务逻辑函数defuser_login(user_id,password):correct_password="secure123"ifpassword!=correct_password:#3.抛出异常raisePasswordError(user_id)print(f"用户{user_id}登录成功!")#4.调用函数并捕获异常try:user_login("user1001","wrongpass")exceptPasswordErrorase:print(f"登录失败:{e}")print(f"出错用户ID:{e.user_id}")Python编程基础三、实战示例:层级设计异常类层级与业务函数实现#1.定义基础业务异常classAppBaseError(Exception):pass#2.派生子异常classParamError(AppBaseError):passclassPermissionError(AppBaseError):pass#3.业务函数与异常抛出defupdate_user(id,role,info):ifnotinfo:raiseParamError("空信息")ifrole!="admin":raisePermissionError()#4.捕获与处理try:update_user("1001","guest",{})exceptParamErrorase:print(f"参数错:{e}")exceptAppBaseErrorase:print(f"业务错:{e}")Python编程基础场景与设计优势场景:大型项目异常分类管理1.精准捕获:针对具体异常(如参数、权限)分别处理2.统一兜底:通过父类AppBaseError统一拦截所有业务异常提升代码可维护性与扩展性!四、使用场景与设计原则核心使用场景1.专属业务规则错误源于特定业务逻辑,无法用内置异常(如ValueError)准确描述时使用。2.异常分类管理大型项目中区分系统与业务异常,便于快速定位问题和日志分

温馨提示

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

最新文档

评论

0/150

提交评论