Skip to content

第7章 常见异常分析 - 错误排查

程序出错不可怕,关键是怎么修复它!


常见错误类型

❌ 1. 编译错误

症状:代码写完后,结绳显示红色错误提示,无法运行。

常见原因和解决方案

语法错误

tie
// ❌ 错误:缺少结束标记
方法 我的方法()
    调试输出("你好")
// 少了 "结束 方法"

// ✅ 正确
方法 我的方法()
    调试输出("你好")
结束 方法

解决:检查所有 方法如果 等都有对应的 结束 标记。

变量类型不匹配

tie
// ❌ 错误:把文本赋值给整数
变量 年龄 : 整数 = "18"  // "18"是文本,不是整数

// ✅ 正确
变量 年龄 : 整数 = 18

解决:检查等号两边的类型是否一致。

变量名写错

tie
// ❌ 错误:变量名拼写错误
变量 学生名字 : 文本 = "张三"
调试输出(学生名称)  // 写成了"名称",应该是"名字"

// ✅ 正确
调试输出(学生名字)

解决:拷贝粘贴,而不是手动打变量名。


❌ 2. 运行时错误

症状:程序编译成功了,但运行时崩溃了。

空指针异常

tie
// ❌ 错误:对象为空,还在访问它的属性
变量 用户 : 用户类?  // 没有赋值,所以是空
用户.名字 = "张三"  // 会崩溃!

// ✅ 正确
变量 用户 : 用户类 = 创建(用户类)
用户.名字 = "张三"

解决

  • 确保创建了对象再使用
  • 或者先判断是否为空
tie
如果 用户 != 空 则
    用户.名字 = "张三"
结束 如果

数组越界

tie
// ❌ 错误:数组只有3个元素,访问第4个
变量 颜色 : 文本[] = { "红", "绿", "蓝" }
调试输出(颜色[3])  // 数组索引从0开始,最大是2

// ✅ 正确
调试输出(颜色[0])  // 输出:红
调试输出(颜色[2])  // 输出:蓝

解决:记住数组索引从0开始。

类型转换失败

tie
// ❌ 错误:把非数字文本转换为整数
变量 文本 : 文本 = "abc"
变量 数字 : 整数 = 转换为整数(文本)  // 会崩溃

// ✅ 正确
变量 数字 : 整数 = 转换为整数("123")

解决:转换前先检查格式是否正确。


❌ 3. 逻辑错误

症状:程序没有报错,但结果不对。

条件判断写反了

tie
// ❌ 错误:判断反了
如果 年龄 < 18 则
    调试输出("已成年")  // 这是错的!
结束 如果

// ✅ 正确
如果 年龄 >= 18 则
    调试输出("已成年")
结束 如果

解决:仔细思考逻辑,打印调试信息验证。

无限循环

tie
// ❌ 错误:循环条件永远成立
变量 i : 整数 = 0
循环(i < 10)
    调试输出(i)
    // 没有改变i,所以循环永不结束!
结束 循环

// ✅ 正确
变量 i : 整数 = 0
循环(i < 10)
    调试输出(i)
    i = i + 1  // 修改i,循环才能结束
结束 循环

解决:确保循环条件最终会变成假。


🔧 错误排查步骤

第1步:看错误信息

结绳会给出清晰的错误提示,包括:

  • 错误位置(第几行)
  • 错误类型(缺少...、类型不匹配等)
  • 错误描述

重点:错误信息是最好的老师,要仔细看。

第2步:找出问题位置

  1. 点击错误信息,编辑器会自动跳到出错的那一行
  2. 看看那一行和周围的代码
  3. 思考哪里可能出问题

第3步:加调试信息

tie
// 在关键位置添加调试信息
变量 用户 : 用户类
调试输出("用户创建完成")

变量 名字 : 文本 = 用户.获取名字()
调试输出("用户名字:" + 名字)

第4步:修复问题

根据错误提示修改代码。

第5步:再次测试

重新运行程序,确认修复成功。


💡 调试技巧

使用调试输出

tie
// 输出变量值,确认逻辑是否正确
调试输出("当前i值:" + i)
调试输出("用户信息:" + 用户.名字)

逐步执行

  1. 在可疑位置添加调试信息
  2. 运行程序
  3. 看看是否输出了预期的值

对比预期和实际

  • 预期:程序应该做什么
  • 实际:程序实际做了什么
  • 找出差异:哪里出问题了

📋 常见错误速查表

错误类型症状解决方法
编译错误红色波浪线检查语法、括号
类型不匹配编译失败检查变量类型
空指针异常运行崩溃先判断是否为空
数组越界运行崩溃检查数组索引
无限循环程序卡住确保循环会结束
逻辑错误结果不对加调试信息验证

🆘 问题排查清单

遇到问题时按照这个清单:

  • [ ] 1. 看错误提示信息
  • [ ] 2. 去到出错的那一行
  • [ ] 3. 检查语法(括号、关键字)
  • [ ] 4. 检查变量名拼写
  • [ ] 5. 检查变量类型
  • [ ] 6. 加调试输出查看中间值
  • [ ] 7. 还是不会?问官方社区

🤝 社区求助

如果自己解决不了,可以在官方社区提问:

提问模板

【标题】遇到的问题简单描述

【环境】
- 结绳版本:4.1.7
- 操作系统:Windows/Mac/Linux
- 错误信息:[粘贴完整错误信息]

【代码】
[贴出有问题的代码]

【现象】
- 预期:程序应该...
- 实际:程序却...

下一步→ 第8章 常见问题

结绳中文编程 - 降低编程门槛,让编程更简单