std::exception
Определено в заголовке <exception> |
||
|---|---|---|
class exception; |
Предоставляет согласованный интерфейс для обработки ошибок через выражение throw.
Все исключения, генерируемые стандартной библиотекой, наследуются от std::exception.
Члены-функции
| создает объект исключения (публичный член-функция) |
|
|
[виртуальный]
|
уничтожает объект исключения (виртуальный публичный член-функция) |
| копирует объект исключения (публичный член-функция) |
|
|
[виртуальный]
|
возвращает строку с пояснениями (виртуальный публичный член-функция) |
Требования к стандартным исключениям
Каждый класс стандартной библиотеки T, который наследуется от std::exception, имеет следующие общедоступные член-функции, каждая из них не завершается с исключением(до C++20)имеет не выбрасывающую исключение спецификацию(с C++20):
|
(с C++20) |
Копирующий конструктор и оператор копирующего присваивания удовлетворяют следующему постусловию:
- Если у двух объектов
lhsиrhsодинаковый динамический типTиlhsявляется копиейrhs, тоstd::strcmp(lhs.what(), rhs.what())равен0.
|
Функция |
(с C++20) |
Стандартные исключения
-
logic_error -
runtime_error -
range_error -
overflow_error -
underflow_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_typeid -
bad_cast -
bad_any_cast(с C++17) -
bad_optional_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) -
bad_variant_access(с C++17)
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам 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/w/cpp/error/exception