РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
597 of 815 menu

Функция make_error_code

Функция make_error_code создает и возвращает объект типа std::error_code. Она принимает в качестве параметра значение перечисления, которое должно быть зарегистрировано как совместимое с std::error_code. Обычно это перечисления, для которых определена специализация шаблона is_error_code_enum. Функция используется для преобразования кодов ошибок, специфичных для конкретной библиотеки или приложения, в универсальный формат error_code.

Синтаксис

std::error_code make_error_code(ErrorCodeEnum e) noexcept;

Пример

Давайте создадим собственное перечисление ошибок и функцию make_error_code для него, а затем получим объект error_code и выведем его сообщение:

#include <iostream> #include <system_error> enum class MyError { success = 0, invalid_argument = 1, out_of_range = 2 }; namespace std { template <> struct is_error_code_enum<MyError> : true_type {}; } std::error_code make_error_code(MyError e) { return std::error_code(static_cast<int>(e), std::generic_category()); } int main() { std::error_code ec = make_error_code(MyError::invalid_argument); std::cout << "Value: " << ec.value() << std::endl; std::cout << "Message: " << ec.message() << std::endl; return 0; }

Результат выполнения кода:

"Value: 1" "Message: Invalid argument"

Пример

Давайте проверим, что созданный код ошибки соответствует нашему перечислению, используя оператор сравнения:

#include <iostream> #include <system_error> enum class MyError { success = 0, invalid_argument = 1, out_of_range = 2 }; namespace std { template <> struct is_error_code_enum<MyError> : true_type {}; } std::error_code make_error_code(MyError e) { return std::error_code(static_cast<int>(e), std::generic_category()); } int main() { std::error_code ec = make_error_code(MyError::out_of_range); if (ec == MyError::out_of_range) { std::cout << "Error matches out_of_range" << std::endl; } else { std::cout << "Error does not match" << std::endl; } return 0; }

Результат выполнения кода:

"Error matches out_of_range"

Смотрите также

  • класс error_code,
    который представляет код ошибки
  • метод message,
    который возвращает текстовое описание ошибки
  • метод value,
    который возвращает числовое значение кода ошибки
  • класс system_error,
    который используется для генерации исключений на основе error_code
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить