Пространства имён
Варианты
Действия

std::system_error::system_error

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Библиотека диагностики
Обработка исключений
Сбои обработки исключений
(до C++17*)
(до C++17*)
(C++11)(до C++17*)    
(до C++17*)
Коды ошибок
Коды ошибок
Категории исключений
(ТС TM)
Поддержка системных ошибок
(C++11)
(C++11)
Утверждения
Трассировка стека
 
 
<tbody> </tbody>
system_error( std::error_code ec );
(1) (начиная с C++11)
system_error( std::error_code ec, const std::string& what_arg );
(2) (начиная с C++11)
system_error( std::error_code ec, const char* what_arg );
(2) (начиная с C++11)
system_error( int ev, const std::error_category& ecat );
(3) (начиная с C++11)
system_error( int ev, const std::error_category& ecat, const std::string& what_arg );
(4) (начиная с C++11)
system_error( int ev, const std::error_category& ecat, const char* what_arg );
(4) (начиная с C++11)
system_error( const system_error& other ) noexcept;
(5) (начиная с C++11)

Создаёт новый объект системной ошибки.

1) Создаёт с кодом ошибки ec
2) Создаёт с кодом ошибки ec и строкой пояснения what_arg. Строка, возвращаемая what(), гарантированно содержит what_arg в качестве подстроки.
3) Создаёт с базовым кодом ошибки ev и соответствующей категорией ошибки ecat.
4) Создаёт с базовым кодом ошибки ev, связанной категорией ошибки ecat и пояснительной строкой what_arg. Строка, возвращаемая what(), гарантированно содержит what_arg в качестве подстроки (при условии, что она не содержит встроенного нулевого символа ).
5) Конструктор копирования. Инициализирует содержимое содержимым other. Если *this и other имеют динамический тип std::system_error, тогда std::strcmp(what(), other.what()) == 0.

Параметры

ec код ошибки
ev базовый код ошибки в перечислении, связанном с ecat
ecat категория ошибки
what_arg пояснительная строка
other другой system_error для копирования

Пример

Демонстрирует, как создать исключение system_error из значения errno.

#include <iostream>
#include <system_error>

int main()
{
    try
    {
        throw std::system_error(EDOM, std::generic_category(), "ИСПРАВЬ МЕНЯ");
    }
    catch (const std::system_error& ex)
    {
        std::cout << "code:    [" << ex.code() << "]\n"
                  << "message: [" << ex.code().message() << "]\n"
                  << "what:    [" << ex.what() << "]\n";
    }
}

Возможный вывод:

code:    [generic:33]
message: [Numerical argument out of domain]
what:    [ИСПРАВЬ МЕНЯ: Numerical argument out of domain]