Namespaces
Variants

Standard library header <exception>

From cppreference.net
Standard library headers

Этот заголовок является частью библиотеки обработки ошибок .

Содержание

Типы

базовый класс для исключений, выбрасываемых компонентами стандартной библиотеки
(класс)
тип-примесь для захвата и хранения текущих исключений
(класс)
исключение, выбрасываемое когда std::current_exception не может скопировать объект исключения
(класс)
(устарело в C++11) (удалено в C++17)
тип функции, вызываемой std::unexpected
(typedef)
тип функции, вызываемой std::terminate
(typedef)
тип умного указателя для обработки объектов исключений
(typedef)

Функции

(deprecated in C++11) (removed in C++17)
функция, вызываемая при нарушении динамической спецификации исключений
(функция)
( removed in C++20* ) (C++17)
проверяет, выполняется ли в данный момент обработка исключений
(функция)
создает std::exception_ptr из объекта исключения
(шаблон функции)
захватывает текущее исключение в std::exception_ptr
(функция)
выбрасывает исключение из std::exception_ptr
(функция)
выбрасывает свой аргумент с std::nested_exception включенным
(шаблон функции)
выбрасывает исключение из std::nested_exception
(шаблон функции)
функция, вызываемая при неудачной обработке исключения
(функция)
получает текущий terminate_handler
(функция)
изменяет функцию, вызываемую std::terminate
(функция)
(deprecated in C++11) (removed in C++17)
получает текущий unexpected_handler
(функция)
(устарело в C++11) (удалено в C++17)
изменяет функцию, вызываемую std::unexpected
(функция)

Синопсис

// все независимые (freestanding)
namespace std {
  class exception;
  class bad_exception;
  class nested_exception;
  using terminate_handler = void (*)();
  terminate_handler get_terminate() noexcept;
  terminate_handler set_terminate(terminate_handler f) noexcept;
  [[noreturn]] void terminate() noexcept;
  constexpr int uncaught_exceptions() noexcept;
  using exception_ptr = /* unspecified */;
  constexpr exception_ptr current_exception() noexcept;
  [[noreturn]] constexpr void rethrow_exception(exception_ptr p);
  template<class E> constexpr exception_ptr make_exception_ptr(E e) noexcept;
  template<class T> [[noreturn]] constexpr void throw_with_nested(T&& t);
  template<class E> constexpr void rethrow_if_nested(const E& e);
}

Класс std::exception

namespace std {
  class exception
  {
  public:
    constexpr exception() noexcept;
    constexpr exception(const exception&) noexcept;
    constexpr exception& operator=(const exception&) noexcept;
    constexpr virtual ~exception();
    constexpr virtual const char* what() const noexcept;
  };
}

Класс std::bad_exception

namespace std {
  class bad_exception : public exception
  {
  public:
    // см. описание для спецификации специальных функций-членов
    constexpr const char* what() const noexcept override;
  };
}

Класс std::nested_exception

namespace std {
  class nested_exception
  {
  public:
    constexpr nested_exception() noexcept;
    constexpr nested_exception(const nested_exception&) noexcept = default;
    constexpr nested_exception& operator=(const nested_exception&) noexcept = default;
    constexpr virtual ~nested_exception() = default;
    // функции доступа
    [[noreturn]] constexpr void rethrow_nested() const;
    constexpr exception_ptr nested_ptr() const noexcept;
  };
  template<class T> [[noreturn]] constexpr void throw_with_nested(T&& t);
  template<class E> constexpr void rethrow_if_nested(const E& e);
}

Смотрите также