一、先别慌:四步法总览

刚开始学编程时,一看到报错就慌,乱改一通反而更乱。后来我固定用这四步,效率高很多:

  1. 复现:稳定地把 bug 触发出来;
  2. 拆解:把问题范围缩小到几行代码;
  3. 搜索:用报错信息找答案;
  4. 记录:写进笔记,下次直接查。

二、第一步:稳定复现

不能复现的 bug 等于没有 bug。先搞清楚三件事:

报错信息不要只看最后一行,从第一个报错开始看,第一个才是根因,后面的常常是连锁反应。

三、第二步:拆解问题

代码很长时,最有效的方法是二分注释法:

  1. 把代码注释掉一半,看还报不报错;
  2. 还报错 → 问题在剩下的一半,继续注释一半;
  3. 不报错 → 问题在被注释的部分,恢复那一半再拆。

几步就能把范围从几百行缩到几行。也可以用打印大法确认变量到哪一步不对:

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)

变量名拼错、变量没声明、作用域拿不到。检查拼写与声明位置。

环境类问题

端口被占用、跨域、依赖没装、路径写错。这类问题往往和代码无关,先看报错的环境信息。

七、小结