CppCoreGuidelines E.3 只用异常处理出错情况
24 July 2023
“Use exceptions for error handling only”
理由
要把出错处理的代码和普通代码分开。C++ 的优化实现,倾向于假定异常情况很少出现。也就是说,默认不太会有很多异常情况要处理。
错误例子
// don't: exception not used for error handling int find_index(vector<string>& vec, const string& x) { try { for (gsl::index i = 0; i < vec.size(); ++i) if (vec[i] == x) throw i; // found x } catch (int i) { return i; } return -1; // not found }
这段代码把事情弄复杂了,而且可能运行速度会更慢些。在一个 vector
中查找一个值一点也不“异常”。
强化
可能需要一些启发式的探索。检查异常值从 catch
语句中“泄漏”出去的情况。