一、代码错误(编程缺陷)
整数溢出 - 实例:
1996年亚利安5号火箭爆炸事件,因16位程序员在16位空间设置64位数据导致爆炸,损失3.7亿美元。
- 原因:数据类型限制未考虑,导致计算结果超出存储范围。
逻辑错误 - 实例:
1962年Mariner 1火箭发射失败,因程序员将公式录入错误,导致轨道计算偏差,最终摧毁火箭。
- 原因:人工输入错误或算法缺陷。
未处理的异常 - 实例:
iOS应用因未处理网络异常崩溃,显示“强制关闭错误”。
- 原因:缺乏对异常情况的检测和恢复机制。
二、界面问题(用户显示异常)
布局错乱 - 实例:
Windows计算器在特定版本中输入平方根后显示错误结果(如4的平方根显示为2-2),界面元素重叠。
- 原因:代码逻辑错误或样式冲突。
信息泄露 - 实例:
某App前端显示后端日志信息,可能涉及用户隐私。
- 原因:后端服务未对敏感信息进行过滤。
三、功能异常(操作失效)
崩溃与闪退 - 实例:
Android应用因内存泄漏崩溃,iOS应用因未处理空格字符闪退。
- 原因:代码优化不足或资源未释放。
功能未实现 - 实例:
公众号登录功能因接口返回值错误无法完成。
- 原因:后端服务故障或前端逻辑错误。
四、灾难性事件(大规模影响)
千年虫问题 - 实例:
1999年12月31日全球多系统因“千禧年”日期错误崩溃,涉及银行、交通等系统。
- 原因:程序员省略年份前两位数字,未考虑四位数年份。
苏联石油管道爆炸 - 实例:
1982年西伯利亚输油管道因控制软件故障引发爆炸,造成巨大经济损失。
- 原因:外部势力植入的计算机病毒破坏程序逻辑。
其他常见类型
性能问题:如加载缓慢、动画卡顿等,通常与代码优化或资源管理不当有关。
参数验证缺失:导致程序在接收到异常输入时崩溃(如输入非数字字符)。
以上案例涵盖了软件Bug的多种表现形式,提醒开发过程中需加强代码审查、异常处理和测试覆盖,以降低风险。