std::exception
Материал из cppreference.com
Определено в заголовочном файле <exception>
|
||
class exception; |
||
Предоставляет согласованный интерфейс для обработки ошибок с помощью выражения throw.
Все исключения, сгенерированные стандартной библиотекой, наследуются от std::exception
.
Содержание |
[править] Функции-элементы
создаёт объект исключения (public функция-элемент) | |
[virtual] |
уничтожает объект исключения (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.
Функция-элемент |
(начиная с C++20) |
[править] Стандартные исключения
- invalid_argument
- domain_error
- length_error
- out_of_range
- future_error (начиная с C++11)
- 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)
- nonexistent_local_time (начиная с C++20)
- ambiguous_local_time (начиная с C++20)
- format_error (начиная с C++20)
- 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++:
Номер | Применён | Поведение в стандарте | Корректное поведение |
---|---|---|---|
LWG 471 | C++98 | не было требований к классам стандартной библиотеки, производным от std::exception
|
добавлены |