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捕获吗

相关新闻

13太保玩转github-第2太保-李嗣昭-本地客户端

13太保玩转github-第2太保-李嗣昭-本地客户端

13太保玩转github-第02太保-胆勇谨厚-本地客户端与Git/gh基本功三套入口不是三套流程,先把基本功练成条件反射text[读者] 会用 Git,但 Desktop、命令行、gh 各记一套[痛点] 换台机器就复现不出昨天的操作[现在读] springaialibabapractice 要求本地流程可…

2026/9/30 2:51:02 阅读更多 →
【信号与系统面试笔记 07】离散时间系统:差分方程、卷积和与系统性质判定

【信号与系统面试笔记 07】离散时间系统:差分方程、卷积和与系统性质判定

这一篇对应郑君里《信号与系统》第七章「离散时间系统」,是第 95 到第 101 题的整理。这一章在面试里出现频率很高,原因不在于公式难,而在于它是一面镜子:只要把离散时间系统与连续时间系统逐条对照着讲,面试官马上就能…

2026/9/30 2:51:02 阅读更多 →
数据科学云服务商Plotly募集550万美元

数据科学云服务商Plotly募集550万美元

今天, 该公司宣布, 其获取了金额为550万美元的A轮融资, MHS和空缺部分担任了领投方, Rho、Real以及硅谷银行则是其他方面参与投资了这笔资金。这家公司坐落在蒙特利尔, 他们给自己开发的一款所谓“前所未有的数据科学平台”定了个极高的身段。对于那些正在处理那些以数据驱动的…

2026/9/30 2:51:02 阅读更多 →

最新新闻

从人驱动到设备驱动:IoT与传统互联网架构的范式转变

从人驱动到设备驱动:IoT与传统互联网架构的范式转变

IoT 与传统互联网架构的区别:从“人驱动系统”到“设备驱动系统”的架构范式转变过去十年,互联网架构师都在解决同一个问题:怎么让用户访问得更快。但当你开始做物联网,你会发现这个问题的前提变了——用户不再是第一关注对象。这…

2026/9/30 4:32:00 阅读更多 →
SSH远程终端工具怎么选?从密钥认证到跳板机实践指南

SSH远程终端工具怎么选?从密钥认证到跳板机实践指南

这几年不管是维护云服务器还是折腾家里的 NAS,我发现自己跟 Linux 打交道最多的时间,其实不是敲命令本身,而是在各种 SSH 远程终端连接工具之间来回切换。别人以为我在终端里噼里啪啦,其实我是先被工具折腾够了才轮到命令折腾我。…

2026/9/30 4:32:00 阅读更多 →
Electron+Vue3+Vite桌面应用模板:主进程通信与工程化实践

Electron+Vue3+Vite桌面应用模板:主进程通信与工程化实践

做桌面端应用,Electron 基本上是目前绕不开的选项。但真正动手搭一套可用的 Electron Vue3 工程,新手老手都得掉几层头发。主进程、渲染进程、预加载脚本、打包配置、开发热更新,每一环都有坑。我这次整理了一套 electron element-plus vi…

2026/9/30 4:32:00 阅读更多 →
安全帽检测YOLO11训练:标签格式转换与跨平台脚本实践

安全帽检测YOLO11训练:标签格式转换与跨平台脚本实践

简介:面向工地及公共场所监控场景的安全帽佩戴检测需求,这份数据集资源整合了1000张真实场景高质量图片,覆盖行人佩戴、遮挡、严重遮挡、高空作业等丰富情况,并划分为helmet(佩戴)与head(未佩戴…

2026/9/30 4:31:59 阅读更多 →
2026软件测试面试高频题全解析:从Linux到AI测试的实战准备

2026软件测试面试高频题全解析:从Linux到AI测试的实战准备

软件测试这个岗位,这几年在求职市场里的热度一直没降过,但面试的难度却在悄悄加码。动不动就考察Linux命令、数据库索引失效场景、自动化框架原理,甚至AI测试和Agent测试也开始出现在面试题里。如果你在准备2026年的软件测试面试,…

2026/9/30 4:31:59 阅读更多 →
巴菲特投资哲学实操指南:从选股逻辑到仓位管理

巴菲特投资哲学实操指南:从选股逻辑到仓位管理

很少有人能用一个名字同时代表一种投资哲学、一家万亿级企业和一段跨越几十年的市场周期,但巴菲特确实做到了。大多数人对他的认知停留在“股神”“价值投资”“长期持有”这些标签上,可真到自己打开行情软件、面对几百只股票的时候,那些标签…

2026/9/30 4:30:59 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →