Spec-Zone.ru › C++

std::exception

Определено в заголовке <exception>
class exception;

Предоставляет согласованный интерфейс для обработки ошибок через выражение throw.

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

Члены-функции

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

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

Каждый класс стандартной библиотеки 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)

Стандартные исключения

  • 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_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

Spec-Zone.ru

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