dev compiler c++ c++11

c++ - compiler - código de error vs condición de error



c++14 (2)

De http://en.cppreference.com/w/cpp/error/error_condition

std :: error_condition es un código de error independiente de la plataforma. Al igual que std :: error_code, se identifica de forma única mediante un valor entero y una std :: error_category, pero a diferencia de std :: error_code, el valor no depende de la plataforma.

Entonces, la ventaja es que su código de error no es específico de la plataforma en la que está trabajando cuando usa la std::error:condition

Con un std::error_code

Cada objeto std :: error_code contiene un par de códigos de error originados en el sistema operativo, o alguna interfaz de bajo nivel

Por lo tanto, el error_code hará referencia a algo específico de su plataforma, una pieza de hardware, etc., etc.

Puede ser ventajoso utilizar ambos. La error_condition es la "abstracción portátil", por lo que sería el mensaje de error genérico para el usuario y el error_code error sería la información dependiente de la plataforma que sería útil para la depuración específica.

Una implementación típica [de error_condition] contiene un miembro de datos enteros (el valor) y un puntero a una std :: error_category.

No entiendo bien por qué necesitamos hacer una distinción entre el código de error (std::error_code) y una condition(std::error_condition) error condition(std::error_condition) , ¿no son lo mismo? ¿Cuáles son las ventajas de una condición de error vs código de error?


La respuesta más sencilla a esta pregunta la encontré aquí: http://blog.think-async.com/2010/04/system-error-support-in-c0x-part-5.html .

  • class std::error_code : representa un valor de error específico devuelto por una operación (como una llamada al sistema).
  • class std::error_condition - algo que desea probar y, potencialmente, reaccionar en su código.

Creo que es aplicable para C ++ 11 también.