我不太明白为什么我们需要区分错误代码(std::error_code)
和错误condition(std::error_condition)
,它们不是一回事吗?错误条件与错误代码的优势是什么?
2 回答
来自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
- 表示操作(例如系统调用)返回的特定错误值。- 类
std::error_condition
- 你想要测试的东西,并且可能在你的代码中做出反应。
我认为它也适用于 C++11。