错误代码与错误条件

时间:2013-05-22 08:49:45

标签: c++ c++11

我不明白为什么我们需要区分错误代码(std::error_code)和错误condition(std::error_condition),它们是不是同一个东西?错误条件与错误代码有什么好处?

2 个答案:

答案 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。