Spec-Zone.ru › C++

std::exception

Определён в заголовочном файле <exception>
class exception;

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

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

Все функции-члены std::exception являются constexpr.

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

Функции-члены

(конструктор)
создаёт объект исключения
(открытая функция-член)
(деструктор)
[виртуальный]
уничтожает объект исключения
(виртуальная открытая функция-член)
operator=
копирует объект исключения
(открытая функция-член)
what
[виртуальная]
возвращает поясняющую строку
(виртуальная открытая функция-член)

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

Каждый класс стандартной библиотеки 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_error
    • invalid_argument
    • domain_error
    • length_error
    • out_of_range
    • future_error (начиная с C++11)
  • 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_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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API