std::system_error::system_error
Материал из cppreference.com
<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) Создаёт с кодом ошибки
ec2) Создаёт с кодом ошибки
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]