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

std::system_error

Материал из cppreference.com
< cpp‎ | error
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, 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)
system_error
(C++11)
Утверждения
Трассировка стека
 
 
Определено в заголовочном файле <system_error>
class system_error;
(начиная с C++11)

std::system_error это тип исключения, генерируемого различными библиотечными функциями (обычно функциями, взаимодействующими со средствами ОС, например конструктором std::thread), когда исключение имеет связанный std::error_code, о котором можно сообщить.

cpp/error/exceptioncpp/error/runtime errorstd-system error-inheritance.svg

Диаграмма наследования

Содержание

[править] Функции-элементы

создаёт объект system_error
(public функция-элемент) [править]
заменяет объект system_error
(public функция-элемент) [править]
возвращает код ошибки
(public функция-элемент) [править]
[virtual]
возвращает поясняющую строку
(virtual public функция-элемент) [править]

Унаследован от std::exception

Функции-элементы

уничтожает объект исключения
(virtual public of std::exception функция-элемент) [править]
[virtual]
возвращает поясняющую строку
(virtual public of std::exception функция-элемент) [править]

[править] Пример

#include <thread>
#include <iostream>
#include <system_error>
 
int main()
{
    try {
        std::thread().detach(); // попытка отсоединить не-поток
    } catch(const std::system_error& e) {
        std::cout << "Пойман system_error с кодом " 
                  << '[' << e.code() << ']'
                  << " означает "
                  << '[' << e.what() << "]\n";
    }
}

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

Пойман system_error с кодом [generic:22] означает [Invalid argument]