https://blog.csdn.net/weixin_45655710?type=blog
@浙大疏锦行
DAY 25 异常处理
知识点回顾:
1.异常处理机制
2.debug过程中的各类报错
3. try-except机制
4. try-except-else-finally机制
在即将进入深度学习专题学习前,我们最后差缺补漏,把一些常见且重要的知识点给他们补上,加深对代码和流程的理解。
作业:理解今日的内容即可,可以检查自己过去借助ai写的代码是否带有try-except机制,以后可以尝试采用这类写法增加代码健壮性。
这份关于 Python异常处理(Exception Handling)的教程非常详尽,涵盖了从基础概念到进阶逻辑,再到实际报错类型的全方位解析。
为了帮你完成作业梳理,我将今日的核心知识点总结为一张思维导图式的清单,并提炼了 AI 时代背景下编程思维的转变。
📝 DAY 25:Python 异常处理核心知识梳理
1. 为什么 AI 喜欢写try-except?
- 稳定性优先:AI 模型在强化学习阶段被要求保证代码“可运行”。通过大量嵌套异常处理,可以防止程序因微小错误(如格式不匹配、网络波动)而崩溃,提高任务完成率。
- 学习点:虽然我们日常写代码追求简洁,但面对不确定的外部输入(接口、文件、用户输入)时,模仿 AI 的防御性编程是非常必要的。
2. 异常处理的“四大家族” (核心语法)
| 关键字 | 作用 | 执行时机 |
|---|---|---|
try | 探测区 | 包含可能出错的代码。程序会尝试跑一遍。 |
except | 救火区 | 只有当try块报错时才执行。用于捕获并处理特定错误。 |
else | 奖励区 | 只有当try块完全没报错时才执行。用于存放“成功后的后续动作”。 |
finally | 扫尾区 | 无论结果如何(报错与否、是否有 return)都会执行。常用于关闭文件、释放显存。 |
3. 必须掌握的常见报错 (Debug 关键词)
在不求助 AI 的情况下,你应该能通过报错的首行判断问题所在:
- 环境/路径类:
ModuleNotFoundError: 没装库(pip install)或路径写错。FileNotFoundError: 路径下找不到文件,多半是相对路径搞错了。
- 数据/逻辑类:
TypeError: 类型不匹配(比如把字符串和数字相加)。ValueError: 类型对了但值不对(比如把 “abc” 强转成数字)。IndexError: 列表索引出界(只有2个元素却访问第3个)。KeyError: 字典里没有这个键。
- 计算/语法类:
SyntaxError: 语法写错了(括号没关、漏了冒号),代码跑都跑不起来。ZeroDivisionError: 除数为零。
4. 深度学习 (DL/ML) 中的实战场景
在机器学习流程中,异常处理不仅仅是“防崩溃”,更是“保数据”:
- 显存溢出 (OOM):使用
try-except捕获 RuntimeError,在程序崩溃前尝试清理缓存。 - 数据读取:当海量图片中有一张损坏时,通过
try-except跳过该样本,保证训练不中断。 - 模型保存 (finally):无论训练是因为完成还是被手动停止(Ctrl+C),通过
finally确保当前进度的权重文件被存入磁盘。
5. 编程习惯建议:从“无脑交给 AI”到“主动 Debug”
- 第一步:看报错行号,确认是哪行代码在叫。
- 第二步:看报错类型,理解是数据问题、语法问题还是环境问题。
- 第三步:尝试自己修改。如果解决不了,再将报错信息和代码一起发给 AI,并阅读 AI 的解释。