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

std::exception

Материал из 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)
 
Библиотека диагностики
Обработка исключений
exception
Сбои обработки исключений
(до C++17*)
(до C++17*)
(C++11)(до C++17*)    
(до C++17*)
Коды ошибок
Коды ошибок
Категории исключений
(ТС TM)
Поддержка системных ошибок
(C++11)
(C++11)
Утверждения
Трассировка стека
 
 
Определено в заголовочном файле <exception>
class exception;

Предоставляет согласованный интерфейс для обработки ошибок с помощью выражения throw.

Все исключения, сгенерированные стандартной библиотекой, наследуются от std::exception.

Содержание

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

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

[править] Требования к стандартным исключениям

Каждый класс T стандартной библиотеки, производный от std::exception, имеет следующие общедоступные функции-элементы, каждая из которых не завершается исключением (до C++20)имеет спецификацию исключения, не создающую исключения (начиная с C++20):

(начиная с C++20)

Конструктор копирования и оператор присваивания копированием соответствуют следующему постусловию:

  • Если два объекта lhs и rhs имеют динамический тип T и lhs является копией rhs, тогда std::strcmp(lhs.what(), rhs.what()) равно 0.

Функция-элемент what() каждого такого T соответствуют ограничениям, указанным для std::exception::what().

(начиная с C++20)

[править] Стандартные исключения

[править] Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 471 C++98 не было требований к классам стандартной библиотеки,
производным от std::exception
добавлены