std::exception
Определён в заголовочном файле <exception> | ||
|---|---|---|
class exception; |
Предоставляет единообразный интерфейс для обработки ошибок с помощью выражения throw.
Все исключения, генерируемые стандартной библиотекой, наследуются от std::exception.
| Все функции-члены | (начиная с C++26) |
Функции-члены
| создаёт объект исключения (открытая функция-член) |
|
|
[виртуальный] | уничтожает объект исключения (виртуальная открытая функция-член) |
| копирует объект исключения (открытая функция-член) |
|
|
[виртуальная] | возвращает поясняющую строку (виртуальная открытая функция-член) |
Требования к стандартным исключениям
Каждый класс стандартной библиотеки T, производный от std::exception, имеет следующие общедоступные функции-члены; каждая из них не завершается генерацией исключения(до C++11 включительно)имеет спецификацию исключений, запрещающую их генерацию(начиная с C++11):
- конструктор по умолчанию (если не предоставлены другие конструкторы)
- конструктор копирования
- оператор копирующего присваивания
Конструктор копирования и оператор копирующего присваивания удовлетворяют следующему постусловию:
- Если два объекта
lhsиrhsимеют динамический типT, аlhsявляется копиейrhs, тоstd::strcmp(lhs.what(), rhs.what())равно0.
Функция-член what() каждого такого T удовлетворяет ограничениям, установленным для std::exception::what().
Стандартные исключения
logic_errorinvalid_argumentdomain_errorlength_errorout_of_range-
future_error(начиная с C++11) runtime_errorrange_erroroverflow_errorunderflow_error-
regex_error(начиная с C++11) -
system_error(начиная с C++11) -
ios_base::failure(начиная с C++11) -
filesystem::filesystem_error(начиная с C++17) -
tx_exception(TM TS) -
nonexistent_local_time(начиная с C++20) -
ambiguous_local_time(начиная с C++20) -
format_error(начиная с C++20) bad_typeidbad_cast-
bad_any_cast(начиная с C++17) -
bad_optional_access(начиная с C++17) -
bad_variant_access(начиная с C++17) -
bad_expected_access(начиная с C++23) -
bad_weak_ptr(начиная с C++11) -
bad_function_call(начиная с C++11) bad_alloc-
bad_array_new_length(начиная с C++11) bad_exception-
ios_base::failure(до C++11 включительно) -
meta::exception(начиная с C++26)
Примечания
| Макрос проверки поддержки возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_constexpr_exceptions | 202411L | (C++26) | constexpr для типов исключений |
Отчёты об исправлении дефектов
Следующие отчёты об исправлении дефектов, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применён к | Опубликованное поведение | Исправленное поведение |
|---|---|---|---|
| LWG 471 | C++98 | требования к классам стандартной библиотеки, производным от std::exception, отсутствовали | добавлены |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/error/exception