专栏首页C++核心准则原文翻译C++核心准则E.31:正确排列catch子句

C++核心准则E.31:正确排列catch子句

E.31: Properly order your catch-clauses

E.31:正确排列catch子句

Reason(原因)

catch-clauses are evaluated in the order they appear and one clause can hide another.

catch子句按照它们表示的次序行,一个子句出发之后,其他子句不再执行。

Example(示例)

void f()
{
    // ...
    try {
            // ...
    }
    catch (Base& b) { /* ... */ }
    catch (Derived& d) { /* ... */ }
    catch (...) { /* ... */ }
    catch (std::exception& e) { /* ... */ }
}

If Derivedis derived from Base the Derived-handler will never be invoked. The "catch everything" handler ensured that the std::exception-handler will never be invoked.

如果Deriveds是Base的派生类,捕捉派生类的处理永远不会执行。捕捉所有异常的处理会导致捕捉std::exception的处理程序永远不会执行。

Enforcement(实施建议)

Flag all "hiding handlers".

标记所有被隐藏的异常处理程序。

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#e31-properly-order-your-catch-clauses

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++核心准则E.18:最小限度显式使用try/catch

    try/catch is verbose and non-trivial uses are error-prone. try/catch can be a si...

    面向对象思考
  • C++核心准则T.65:使用标签分发提供函数的不同实现

    T.65: Use tag dispatch to provide alternative implementations of a function

    面向对象思考
  • C++核心准则编译边学-F.47 赋值运算符应该返回T&

    The convention for operator overloads (especially on value types) is foroperator...

    面向对象思考
  • 使用#include消除重复代码

    上述是最为常用的,对于C++程序,闭包可能用得相对少一点。下列代码使用的是第5种:利用#include消除重复代码:

    一见
  • 面向NLP的AI产品方法论——寻找语音交互的业务场景

    绘声绘色地讲故事和枯燥严谨地深度思考,觥筹交错,最终为标题服务——如何寻找语音交互的业务场景。

    半吊子全栈工匠
  • 深入理解机器学习:从原理到算法 学习笔记-第1周 02简易入门

    领域集:X,例如所有木瓜的集合。 标签集:Y,目前仅讨论二元集合,如{0,1}或者{−1,+1},表示木瓜好吃和不好吃。 训练数据:形如S = ((x ...

    csxiaoyao
  • 一篇文章搞懂代理模式

    代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗点说,就是一个中介,比如有一个广州人,是个本地人,有两套房,他要租出去...

    java技术爱好者
  • 数据结构(一)之基础知识

    用户2145235
  • 数据结构(一)之基础知识

    用户2145235
  • 高性能NIO框架Netty-对象传输

    上篇文章高性能NIO框架Netty入门篇我们对Netty做了一个简单的介绍,并且写了一个入门的Demo,客户端往服务端发送一个字符串的消息,服务端回复一个字符串...

    猿天地

扫码关注云+社区

领取腾讯云代金券