一、先别慌:四步法总览
刚开始学编程时,一看到报错就慌,乱改一通反而更乱。后来我固定用这四步,效率高很多:
- 复现:稳定地把 bug 触发出来;
- 拆解:把问题范围缩小到几行代码;
- 搜索:用报错信息找答案;
- 记录:写进笔记,下次直接查。
二、第一步:稳定复现
不能复现的 bug 等于没有 bug。先搞清楚三件事:
- 我做了什么操作?输入是什么?
- 期望的结果是什么?
- 实际结果是报错、还是结果不对?报错信息完整抄下来。
报错信息不要只看最后一行,从第一个报错开始看,第一个才是根因,后面的常常是连锁反应。
三、第二步:拆解问题
代码很长时,最有效的方法是二分注释法:
- 把代码注释掉一半,看还报不报错;
- 还报错 → 问题在剩下的一半,继续注释一半;
- 不报错 → 问题在被注释的部分,恢复那一半再拆。
几步就能把范围从几百行缩到几行。也可以用打印大法确认变量到哪一步不对:
print("1. 开始")
data = get_data()
print("2. 拿到数据:", data) # 看这里是不是 None
result = handle(data)
print("3. 处理完成:", result)
四、第三步:搜索
搜索的关键是用对关键词,把没用的信息去掉:
- 去掉自己项目的路径、变量名,只留核心报错;
- 英文报错直接用原文搜索,结果更准;
- 优先看官方文档和问答社区,别只看二手文章。
举个例子,控制台报:
Uncaught TypeError: Cannot read properties of undefined (reading 'name')
翻译一下就是"读取 undefined 的 name 属性",说明你操作的那个对象是 undefined。那就回头检查:对象有没有取到、接口有没有返回、拼写对不对——基本就能定位。
五、第四步:记录
同一个坑踩两次最亏。解决完立刻记下来:
- 现象:报的什么错;
- 原因:为什么会这样;
- 解法:怎么改的;
- 启发:以后怎么避免。
本站的学习记录,其实就是我平时这么一条条攒起来的。
六、常见错误类型速查
语法错误(SyntaxError)
括号、引号没配对,Python 缩进不对,少了冒号。看报错指向的那一行和上一行。
类型错误(TypeError)
类型不匹配,比如字符串和数字直接相加、对 None 做运算。检查变量真实类型。
未定义(NameError / undefined)
变量名拼错、变量没声明、作用域拿不到。检查拼写与声明位置。
环境类问题
端口被占用、跨域、依赖没装、路径写错。这类问题往往和代码无关,先看报错的环境信息。
七、小结
- 复现 → 拆解 → 搜索 → 记录,四步走;
- 从中断报错的第一行开始看;
- 二分注释法能快速缩小范围;
- 搜索引擎里只留核心报错,英文原句更好用;
- 解决完一定记笔记。