【AI产品经理实战】Day 38|try-except 踩坑实录:报错是数据

| 进度条:学习第 38 天(38/191)|当前完成度:约 31% |
📎 今日速览:主学 try/except 异常处理 + traceback,4 轮报错实验亲手跑通作用域题和 traceback 题,最大体会:报错不是失败,是实验数据 ← 先看这段


〇、今日投入 & 产出(量化)

维度 内容 量化
投入-时间 看视频 + 抄跑代码 + 4 轮报错实验 约 3~4 小时
投入-外部输入 try/except 视频教程、手写笔记 2 页、学习复盘文档 3 类
产出-代码/数据 try_except练习.py:异常结构、作用域题、traceback 题、4 轮报错实验 1 份代码
产出-文档/博客 本篇 Day 38 学习笔记(含 4 个踩坑全记录) 1 篇

一、今日任务(完成+收获)

1.1 今日任务原文

学习 try/except 异常处理,配合 traceback 模块;理论听懂后必须亲手写代码、亲手踩坑,跑通作用域题和 traceback 题。

📷 图1:try/except 手写笔记(结构与变量作用域要点)

1.2 完成情况

任务项 计划 实际 状态
try/except 基本结构与语法 掌握 掌握,含 else / finally / raise 全家福 ✅ 完成
指定异常类型与多分支捕获 掌握 掌握,能按类型分类处置 ✅ 完成
变量作用域题 跑通 亲手跑通,含未定义变量陷阱 ✅ 完成
traceback 题 跑通 print_exc / format_exc 都跑过 ✅ 完成
4 轮报错实验 逐个踩坑 4 个坑全部复现并解决 ✅ 完成

1.3 今日收获 & 学到的知识点

① try / except 是什么:try 里放"可能出错的代码",except 里放"出错后的补救"。就算出错,程序也不会一下崩掉。

  • 大白话:端汤先垫个托盘(try),洒了只脏托盘(except),桌子没事。

② 指定异常类型(只抓你想抓的错) ​:except 后面写具体错误名(比如 ZeroDivisionError),就只接这一种错;也可以用 except Exception as e 把"所有错"都接住再慢慢看。

  • 大白话:except 像门口保安,你写"只拦张三",那李四进来就放行;写"所有人",那就谁来拦谁。

**③ 报错分两种(对比表)**​

对比项 格式错误(SyntaxError) 运行时错误(1/0 这类)
错在哪 句子写错了,Python 还没跑就拦下 句子没错,跑到一半才炸
怎么发现 红色小箭头 ^ 指着错字 报错里写明第几行

④ traceback:教你看懂报错红字 。读法就一句:从下往上读------最后一行是错误类型,往上是第几行出错。

写法 作用
traceback.print_exc() 当场把报错打出来
error_info = traceback.format_exc() 把报错抄成一个字符串存起来,想打印再打印

**⑤ 变量的两个坑(今天最大的收获)**​:

  • 坑一:变量全文件通用。前面定义过的 x,后面随时能用;重名会拿到旧值。比喻:公共冰箱贴了你的名字,全屋都能拿------旧标签不撕,拿到的可能是上周的剩菜。防法:一个变量只干一件事,新功能起新名字。

  • 坑二:try 里出事太早、变量还没来得及赋值,except 里用它就会报 NameError。防法:先写 result = None 占个位。

⑥ finally / else / raise 一句话分工:else 没出错才跑;finally 收摊必跑;raise 主动拉警报。

📷 图2:traceback 手写笔记(print_exc 与 format_exc 用法)


二、卡点分两类(已解决 / 未解决)

✅ 今日已解决

2.1 两句代码挤一行报 SyntaxError 怎么解开的
  • 什么时候出现 :写成 y = 1 / 0 x = 10,报 SyntaxError: invalid syntax,红色小箭头 ^ 指着出事位置。

  • 我的理解:像对服务员一口气糊着说"番茄炒蛋不要香菜帮我加菜",Python 听不懂。

  • 解决办法:两句代码各占一行,顺手记住口诀"冒号、缩进、一句一行"。

✅ 验证结果:拆成两行后正常运行,除零错误如约而至。

2.2 改了代码却"没变化"(旧变量干扰)怎么解开的
  • 什么时候出现:把 x = 10 挪到 1/0 后面,运行居然还打印 10,没有报错;思考题的 NameError 一直抓不到。

  • 我的理解:实验 1 早在文件开头定义过 x = 10,变量全文件共享,except 里的 print(x) 摸到的是旧 x------不报错、只悄悄给错值,比报错更可怕。

  • 解决办法:把变量换成全文件从没用过的名字 price 再跑。

✅ 验证结果 :成功抓到 NameError: name 'price' is not defined,还附赠彩蛋 Did you mean: 'print'?。验证"应该报错"的行为时,要用全新变量名排除干扰因素。

📷 图3:VS Code 实操截图------终端精确报出异常位置与类型

2.3 报错信息比想象的长怎么解开的
  • 什么时候出现:NameError 前面多了一段 "During handling of the above exception, another exception occurred"。

  • 我的理解:处理第一个异常(除零)的过程中又冒出第二个异常(price 未定义),Python 把两件事都记录在案------像事故报告的"连环追尾记录"。

  • 解决办法:学会从下往上读 Traceback:最后一行是错误类型,往上是案发位置。

✅ 验证结果:能独立读懂完整报错信息,准确定位到 line 79。

❓ 还没搞懂(带到明天)

没吃透的点 卡在哪 准备什么时候啃
raise 主动抛异常与异常链完整机制 只知道 raise 能拉警报,"连环追尾记录"的底层规则还没亲手实验过 本周内

💡 今天没踩硬坑,这条是"最拿不准、想验证但还没验证"的点。


三、小结和下一步计划

3.1 今日小结

  • 停更了几天处理个人事情,这篇 Day 38 断断续续练了两天才成稿------没有赶进度笔记和代码都是亲手磨出来的。

  • 理论(看视频)30 分钟就觉得"全懂了",实操却花了好几个小时,但正是这 4 个坑让每个知识点都长在了手上:作用域题和 traceback 题都亲手跑通。复更第一天,越踩坑越踏实。

3.2 ✨ 高光时刻 / 亮点

换了一个从没用过的新变量名 price 再跑,成功抓到了 NameError 报错。

为什么算高光:结果太顺利的时候,先怀疑"是不是没跑到新代码"------这个排查习惯,以后做产品验证也用得上。

3.3 下一步计划

任务 验收标准
学 HTTP 与 API 概念:请求 / 响应 / 状态码 看视频 + 代码实操运行,能用自己的话说清"请求-响应"一来一回,认出 200 / 404 这类状态码
raise 主动抛异常实验(遗留) 亲手制造一次异常链,读懂完整"连环追尾"报错

📌 3 行速记

· 做了:try/except + traceback 理论 + 4 轮报错实验,跑通作用域题和 traceback 题

· 学会:变量作用域相通但赋值前跳转会 NameError;traceback 能精确到行;报错是实验数据

· 卡住:raise 主动抛异常与异常链机制未亲手实验


我是卿卿,一个正在自学 AI 知识的小白,一个转行学 AI 的小白。这是「AI产品经理191天通关计划」的 Day 38,目标很简单:每天留下一份能回头看懂的笔记。

相关推荐
爱敲代码的小黄8 小时前
神经网络入门指南:从 CNN、RNN 到 Attention
人工智能·面试·程序员
一只爱撸猫的程序猿9 小时前
我看着一个 AI 引擎在 14 天里,从"记忆"走进了"搜索"
人工智能·后端·架构
叼烟扛炮9 小时前
[LangChain] 学习笔记(06):突破大模型限制——结构化输出(Structured Output)
windows·笔记·学习·langchain
我登哥MVP10 小时前
DeepSeek-Harness-Super-Agent-学习笔记
人工智能·深度学习·神经网络·机器学习·自然语言处理·agent
LucianaiB10 小时前
【元宝搜索开发者征文大赛】AI时代,学得慢就不用学?用元宝搜索打造一个教程保质期,确保每一个教程符合你的现状
前端·人工智能·ai编程
且从容.10 小时前
VUE3学习笔记(根据黑马教程总结)
笔记·学习
冬奇Lab11 小时前
一天一个开源项目(第256篇):Anatomy —— 让 Claude 为技术概念「发明一台机器」,画成可交互的等距插画
人工智能·开源
孟郎郎11 小时前
打造一切(Craft Anything)——克隆构造世间万物
人工智能·ai·github·软件构建·开源软件
Martina_032111 小时前
AI生成3D场景的霓虹灯一开就糊成光团?用6步检查Emissive、Bloom与曝光
人工智能·3d·ai·自然语言处理·游戏引擎·材质·贴图