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

Класс error_code

Класс error_code представляет собой легковесный контейнер для хранения значения кода ошибки и указателя на категорию ошибок. Он используется для передачи кодов ошибок без генерации исключений. Объект содержит два основных поля: числовое значение кода и категорию, которая определяет смысл этого кода. Значение 0 обычно означает отсутствие ошибки. Для получения текстового описания ошибки используется метод message, а для извлечения числового значения - метод value. Класс поддерживает сравнение с другими объектами error_code и с числовыми значениями.

Синтаксис

error_code ec; error_code ec(value, category);

Пример

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

#include <iostream> #include <system_error> using namespace std; int main() { error_code ec; cout << "value: " << ec.value() << endl; cout << "message: " << ec.message() << endl; cout << "has error: " << (ec ? "true" : "false") << endl; return 0; }

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

"value: 0" "message: "Success"" "has error: false"

Пример

Давайте создадим объект error_code с ненулевым значением из категории generic_category и выведем информацию о нем:

#include <iostream> #include <system_error> using namespace std; int main() { error_code ec(2, generic_category()); cout << "value: " << ec.value() << endl; cout << "message: " << ec.message() << endl; cout << "has error: " << (ec ? "true" : "false") << endl; return 0; }

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

"value: 2" "message: "No such file or directory"" "has error: true"

Пример

Давайте сравним два объекта error_code между собой и с числовым значением:

#include <iostream> #include <system_error> using namespace std; int main() { error_code ec1(2, generic_category()); error_code ec2(2, generic_category()); error_code ec3; cout << "ec1 == ec2: " << (ec1 == ec2 ? "true" : "false") << endl; cout << "ec1 == ec3: " << (ec1 == ec3 ? "true" : "false") << endl; cout << "ec1 == 2: " << (ec1 == 2 ? "true" : "false") << endl; cout << "ec3 == 0: " << (ec3 == 0 ? "true" : "false") << endl; return 0; }

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

"ec1 == ec2: true" "ec1 == ec3: false" "ec1 == 2: true" "ec3 == 0: true"

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

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