我不明白为什么我们需要区分错误代码(std::error_code)
和错误condition(std::error_condition)
,它们是不是同一个东西?错误条件与错误代码有什么好处?
答案 0 :(得分:13)
来自http://en.cppreference.com/w/cpp/error/error_condition
std :: error_condition是一个与平台无关的错误代码。喜欢 std :: error_code,它由整数值和a唯一标识 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的指针。
答案 1 :(得分:10)
我在这里找到的这个问题的最简单答案是: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。