CppCoreGuidelines E.17 不要在每个函数中捕获所有异常
08 August 2023
“Don’t try to catch every exception in every function”
理由
在一个函数中捕获异常,但是又无法进行有意义的恢复动作,会导致代码复杂和性能损失。还是让异常向上传导,直到有一个函数能处理它。还是通过 RAII 在层层解构之后开展清理动作。
错误例子
void f() // bad { try { // ... } catch (...) { // no action throw; // propagate exception } }
强化
- 标记堆叠递归的
try
语句块 - 标记函数中
try
语句块太多的代码文件