std::system_error::system_error
Из ru.cppreference.net
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(), "FIX ME"); } 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: [FIX ME: Numerical argument out of domain]