【发布时间】:2013-05-17 05:56:03
【问题描述】:
我不太明白为什么我们需要区分错误代码(std::error_code) 和错误condition(std::error_condition),它们不是一回事吗?错误条件与错误代码的优势是什么?
【问题讨论】:
我不太明白为什么我们需要区分错误代码(std::error_code) 和错误condition(std::error_condition),它们不是一回事吗?错误条件与错误代码的优势是什么?
【问题讨论】:
来自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 的指针。
【讨论】:
我在这里找到了这个问题的最简单答案: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。
【讨论】: