错误处理没有一种方式适合所有场景。C++ 既可以使用返回值,也可以使用异常,还提供 std::optional、std::variant 等类型明确表达“可能没有结果”或“结果有多种形态”。
先区分错误类别
- 程序员错误:违反内部不变量、下标错误;通常通过断言、测试和修复代码解决;
- 预期失败:没找到键、用户输入不合法;属于正常控制流;
- 运行环境失败:文件打不开、分配失败、网络中断;调用者可能恢复或向上报告;
- 不可恢复失败:核心状态损坏等,可能只能安全终止。
2026/7/18大约 4 分钟