【问题标题】:error code vs error condition错误代码与错误条件
【发布时间】:2013-05-17 05:56:03
【问题描述】:

我不太明白为什么我们需要区分错误代码(std::error_code) 和错误condition(std::error_condition),它们不是一回事吗?错误条件与错误代码的优势是什么?

【问题讨论】:

    标签: c++ c++11


    【解决方案1】:

    来自http://en.cppreference.com/w/cpp/error/error_condition

    std::error_condition 是与平台无关的错误代码。喜欢 std::error_code,它由一个整数值和一个唯一标识 std::error_category,但与 std::error_code 不同,该值不是 平台相关。

    因此,使用std::error:condition 时,您的错误代码并不特定于您正在使用的平台。

    std::error_code

    每个 std::error_code 对象包含一对错误代码 来自操作系统,或者一些底层接口

    因此,error_code 将引用特定于您的平台、硬件等的内容。

    同时使用两者可能是有利的。 error_condition 是“可移植抽象”,因此将是提供给用户的通用错误消息,error_code 将是对特定调试有用的平台相关信息。

    [error_condition] 的典型实现包含一个整数数据成员(值)和 指向 std::error_category 的指针。

    【讨论】:

      【解决方案2】:

      我在这里找到了这个问题的最简单答案:http://blog.think-async.com/2010/04/system-error-support-in-c0x-part-5.html。

      • class std::error_code - 表示操作(例如系统调用)返回的特定错误值。
      • class std::error_condition - 你想要测试的东西,并且可能在你的代码中做出反应。

      我认为它也适用于 C++11。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-11
        • 2021-11-07
        • 2013-03-13
        • 1970-01-01
        相关资源
        最近更新 更多