首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C++核心准则E.17:不要试图在所有函数中捕捉所有异常

C++核心准则E.17:不要试图在所有函数中捕捉所有异常

作者头像
面向对象思考
发布2020-08-05 23:26:19
发布2020-08-05 23:26:19
3850
举报

E.17: Don't try to catch every exception in every function

E.17:不要试图在所有函数中捕捉所有异常

Reason(原因)

Catching an exception in a function that cannot take a meaningful recovery action leads to complexity and waste. Let an exception propagate until it reaches a function that can handle it. Let cleanup actions on the unwinding path be handled by RAII.

在一个无法提供有意义的恢复操作的函数中捕捉错误会导致代码复杂化和冗余。让异常向外传播直到到达一个可以处理它的函数。让RAII处理解旋路径上的清理动作。

Example, don't(反面示例)

代码语言:javascript
复制
void f()   // bad
{
    try {
        // ...
    }
    catch (...) {
        // no action
        throw;   // propagate exception
    }
}
Enforcement(实施建议)
  • Flag nested try-blocks.
  • 标记嵌套的try代码块。
  • Flag source code files with a too high ratio of try-blocks to functions. (??? Problem: define "too high")
  • 识别try代码块数相对函数个数比例过高的源文件。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • Reason(原因)
    • Enforcement(实施建议)
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档