新闻详情

新闻详情

首页 / 资讯中心 / 详情

Python打卡第28天

发布时间:2026/9/30 2:50:50来源:尧图网络
Python打卡第28天
浙大疏锦行Python异常处理try-except-else-finally不知道大家有没有发现一个现象 我们自己手写Python代码时很少主动写try-except异常处理但只要让AI生成代码几乎所有IO、计算、数据读取的逻辑外面都会包上try-except。原因很简单大模型训练时会优先保证代码能够成功运行。增加异常捕获提升代码鲁棒性遇到意外输入、文件缺失、运算错误时不会直接程序崩溃。 但很多同学只是复制粘贴AI代码并不理解try整套机制的执行流程遇到报错只会直接丢给AI修复自身Debug能力很难提升。今天这篇文章完整梳理Python异常处理机制拆解try-except-else-finally带你读懂AI代码里的异常模块学会主动捕获错误、读懂报错堆栈。一、Python异常处理核心机制Python程序运行时如果遇到意外情况就会抛出异常Exception并创建异常对象。 如果这段代码包裹在try块中程序不会直接终止而是去寻找匹配的except块处理错误若无匹配捕获异常向上抛出程序崩溃打印Traceback回溯信息。整套语句由4个部分组成其中try和except是必需else、finally为可选try存放可能抛出异常的代码优先执行except捕获指定类型异常异常发生时执行补救逻辑else仅try块无异常才执行把成功后的业务逻辑和风险代码隔离finally无论是否报错、有没有捕获异常一定会执行用于资源清理核心区分else是成功分支except是异常分支finally是兜底清理分支。二、基础语法try-except最基础的异常捕获结构用来拦截指定类型错误防止程序直接崩溃。try: # 可能报错的代码 risk_code() except 指定异常类型: # 捕获到该类型异常时执行 handle_error() except: # 不推荐裸except捕获所有异常容易隐藏bug pass编码规范尽量捕获具体异常不要直接写裸except。裸except会捕获KeyboardInterrupt这类中断信号屏蔽程序致命问题掩盖隐藏bug。示例除零异常捕获numerator 10 denominator 0 try: print(尝试除法运算) result numerator / denominator print(f计算结果{result}) except ZeroDivisionError: print(捕获异常除数不能为0) result None print(程序继续向下执行不会直接崩溃)执行逻辑进入try执行代码触发除零异常try内出错之后的代码不再继续执行直接跳出try匹配ZeroDivisionError执行except内代码except执行完毕跳出整个try结构继续执行后续代码重点如果抛出的异常类型所有except都没有匹配上 → 不会进入任何except异常向上抛出程序崩溃但是finally如果存在依旧会执行三、try-except-else很多人容易误解的elseelse子句try块代码完全正常、没有抛出任何异常才会执行else。 很多新手会混淆try-else和if-else这里一定要分清if-else两个分支只会执行其中一个try-except-elsetry执行成功 → try代码 else代码都会执行try报错 → 执行exceptelse完全跳过else设计的核心价值把可能报错的风险代码和成功后的后续逻辑分开。 如果把后续业务代码写在try里面后续代码抛出的异常会被当前的except意外捕获造成逻辑错乱。放到elseelse里代码抛出的异常不会被当前try的except捕获。示例安全除法函数def safe_divide(a, b): print(f\n计算 {a} / {b}) try: result a / b except ZeroDivisionError: print(异常除数不能为0) return None except TypeError: print(异常输入必须是数字) return None else: # 只有除法运算成功才执行这里 print(运算成功) print(f原始结果{result}两倍结果{result*2}) return result safe_divide(10,2) # 正常走tryelse safe_divide(10,0) # 除零走except跳过else safe_divide(10,2) # 类型错误走except跳过else四、finally资源清理的兜底保障finally最大特点无论什么情况一定会执行。try正常执行 ✅ → 执行finallytry报错匹配except ✅ → 执行finallytry报错没有匹配except程序即将崩溃 ✅ → 依然先执行finallytry/except内部写了return函数提前返回 ✅return前依然执行finally典型使用场景ML开发、文件IO高频使用文件读写关闭文件句柄防止文件损坏、数据丢失数据库关闭数据库连接深度学习训练释放显存、记录日志、保存断点就算OOM、手动中断也能保存状态临时修改全局参数结束后恢复原始配置补充日常文件读写优先用with上下文管理器它底层封装了类似finally的自动资源释放写法更简洁。完整四合一模板try-except-else-finallydef demo(): try: print(进入try执行风险代码) res 10 / 2 except ZeroDivisionError: print(捕获除零错误) res None else: print(try无异常进入else) res * 10 finally: print(finally无论如何都会执行清理资源) return res demo()五、Python高频异常类型汇总看懂Traceback报错第一步就是识别异常类型这是独立Debug的基础SyntaxError语法错误代码语法不合法解释器解析阶段就报错还没运行代码try捕获不到NameError名称错误使用未定义的变量/函数名大概率拼写错误TypeError类型错误对不支持的类型执行操作例如字符串 数字ValueError值错误类型正确但数值无效如float(12.34.56)IndexError索引错误列表、字符串索引越界访问不存在下标KeyError键错误字典读取不存在的keyAttributeError属性错误对象没有该属性/方法例如字符串.lengthZeroDivisionError除零错误除数为0FileNotFoundError文件不存在读取文件路径错误ModuleNotFoundError模块缺失需要pip安装第三方库程序报错时Traceback回溯信息包含4个关键信息 ① 异常类型 ② 报错文件与行号 ③ 出错代码行 ④ 错误描述。建议遇到报错优先阅读Traceback不要直接复制丢给AI。读懂报错才是提升Debug能力的关键。六、编码建议与避坑总结捕获异常尽量写具体异常类型不要直接裸except:避免掩盖致命错误try块尽量精简只包裹真正可能抛出异常的代码不要把无关业务全部塞进try成功后的后续逻辑放到else隔离风险代码避免异常误捕获资源释放关闭文件、连接优先finally或者with上下文管理器不要滥用try能用if前置判断的逻辑优先iftry用于不可提前预判的运行时意外七、结语try-except不是AI专属的花活是工业级Python代码必备的容错机制。 AI写代码大量使用它本质是提升代码鲁棒性应对各种不可预知的输入与环境。 学会读懂这套异常处理机制看懂Traceback遇到报错尝试自己定位异常类型而不是无脑交给AI才能真正提升代码能力。可选CSDN摘要一句话本文详解Python try-except-else-finally全套异常处理语法拆解执行逻辑列举常见异常类型讲解else和finally的使用场景看懂AI代码里大量出现的异常捕获模块学会独立排查报错。如果你想我可以再给你配套文末【思考题】适合博客互动评论区一段精简的摘要关键词把文章压缩成适合短视频/公众号版本要不要顺便写几个评论区思考题比如Q1try里面抛出异常没有匹配exceptfinally还会执行吗 Q2else里面抛出的异常会被当前try的except捕获吗
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

AI工程实战路线图:从Prompt到RAG与Agent的完整落地指南 2026/9/30 3:54:18

AI工程实战路线图:从Prompt到RAG与Agent的完整落地指南

开头我先不绕弯子:“ai-engineering-from-scratch”是我给自己立的一个硬性目标——不靠所谓“提示词魔法”,不依赖任何现成平台的黑盒封装,从最底层的能力开始,把AI工程这条链路完整地趟一遍。写了很多年代码、玩了不少大模型之后…

阅读更多 →
AIMOS AM-PC11H实测:Mac/Win10键鼠共享与文件互传 2026/9/30 3:54:18

AIMOS AM-PC11H实测:Mac/Win10键鼠共享与文件互传

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Node.js+Vue实现CRM客户关系管理系统:从设计到部署全解析 2026/9/30 3:54:18

Node.js+Vue实现CRM客户关系管理系统:从设计到部署全解析

客户关系管理系统(CRM)这个题目,在毕业设计和中小型项目里出现频率相当高。后台管理系统列表页表单页时间线的组合方式,业务边界清楚,既覆盖了常规的后端CRUD能力,又包含权限、数据隔离这些稍微进阶的设计点…

阅读更多 →
SAP Fiori Launchpad应用找不到?从权限配置到服务激活的排障指南 2026/9/30 3:54:18

SAP Fiori Launchpad应用找不到?从权限配置到服务激活的排障指南

SAP项目群里最怕收到的一句话,不是停机,也不是数据错,而是轻飘飘的一句:“SAP Launchpad上找不到XX应用了。” 因为这句话背后可能藏着完全不同的病因:用户权限不对、目录组没配、OData服务没激活、缓存没刷新……而且…

阅读更多 →
MAG内控与BCG考试全流程复盘:从体系设计到落地执行 2026/9/30 3:54:18

MAG内控与BCG考试全流程复盘:从体系设计到落地执行

在软通动力做项目交付这些年,每年雷打不动要组织的一件事,就是全员参加公司内部的MAG内控与BCG考试。第一次接到这个任务时,我也跟大多数人一样困惑:MAG到底是个什么体系?BCG听着像某家咨询公司的缩写,跟考…

阅读更多 →
降AI工具实测:最便宜的反而更猛?三款代表性工具横向对比 2026/9/30 3:54:11

降AI工具实测:最便宜的反而更猛?三款代表性工具横向对比

上个月帮朋友改一份项目汇报,初稿是AI写的,逻辑清晰、数据齐全,可他一交上去,领导扫了一眼就问“这是AI写的吧?”这事让我彻底意识到,“降AI”已经不是小众需求了。市面上叫“降AI工具”的产品很多&#xf…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉