Appearance
第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步:找出问题位置
- 点击错误信息,编辑器会自动跳到出错的那一行
- 看看那一行和周围的代码
- 思考哪里可能出问题
第3步:加调试信息
tie
// 在关键位置添加调试信息
变量 用户 : 用户类
调试输出("用户创建完成")
变量 名字 : 文本 = 用户.获取名字()
调试输出("用户名字:" + 名字)第4步:修复问题
根据错误提示修改代码。
第5步:再次测试
重新运行程序,确认修复成功。
💡 调试技巧
使用调试输出
tie
// 输出变量值,确认逻辑是否正确
调试输出("当前i值:" + i)
调试输出("用户信息:" + 用户.名字)逐步执行
- 在可疑位置添加调试信息
- 运行程序
- 看看是否输出了预期的值
对比预期和实际
- 预期:程序应该做什么
- 实际:程序实际做了什么
- 找出差异:哪里出问题了
📋 常见错误速查表
| 错误类型 | 症状 | 解决方法 |
|---|---|---|
| 编译错误 | 红色波浪线 | 检查语法、括号 |
| 类型不匹配 | 编译失败 | 检查变量类型 |
| 空指针异常 | 运行崩溃 | 先判断是否为空 |
| 数组越界 | 运行崩溃 | 检查数组索引 |
| 无限循环 | 程序卡住 | 确保循环会结束 |
| 逻辑错误 | 结果不对 | 加调试信息验证 |
🆘 问题排查清单
遇到问题时按照这个清单:
- [ ] 1. 看错误提示信息
- [ ] 2. 去到出错的那一行
- [ ] 3. 检查语法(括号、关键字)
- [ ] 4. 检查变量名拼写
- [ ] 5. 检查变量类型
- [ ] 6. 加调试输出查看中间值
- [ ] 7. 还是不会?问官方社区
🤝 社区求助
如果自己解决不了,可以在官方社区提问:
提问模板:
【标题】遇到的问题简单描述
【环境】
- 结绳版本:4.1.7
- 操作系统:Windows/Mac/Linux
- 错误信息:[粘贴完整错误信息]
【代码】
[贴出有问题的代码]
【现象】
- 预期:程序应该...
- 实际:程序却...下一步→ 第8章 常见问题