Подтвердить что ты не робот

Код ошибки против условия ошибки

Я не совсем понимаю, почему нам нужно сделать различие между кодом ошибки (std::error_code) и ошибкой condition(std::error_condition), разве это не одно и то же? Каковы преимущества условия ошибки по сравнению с кодом ошибки?

4b9b3361

Ответ 1

От 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.

Ответ 2

Самый простой ответ на этот вопрос я нашел здесь: http://blog.think-async.com/2010/04/system-error-support-in-c0x-part-5.html.

class error_code - представляет собой конкретное значение ошибки, возвращаемое (например, системный вызов). class error_condition - что-то которые вы хотите протестировать и, возможно, реагировать на ваш код.

Я думаю, что он применим и для С++ 11.