Заголовочный файл стандартной библиотеки <exception>
Материал из cppreference.com
Этот заголовок является частью библиотеки обработки ошибок.
Типы | ||
базовый класс для исключений, создаваемых компонентами стандартной библиотеки (класс) | ||
(C++11) | комбинированный тип для захвата и хранения текущих исключений (класс) | |
исключение, которое возникает, когда std::current_exception не может скопировать объект исключения (класс) | ||
(удалено в C++17) | тип функции, вызываемой из std::unexpected (определение типа) | |
тип функции, вызываемой из std::terminate (определение типа) | ||
(C++11) | тип общего указателя для обработки объектов исключений (определение типа) | |
Функции | ||
(удалено в C++17) | функция, вызываемая при нарушении спецификации динамического исключения (функция) | |
(удалено в C++20)(C++17) | проверяет, выполняется ли в настоящее время обработка исключений (функция) | |
(C++11) | создаёт std::exception_ptr из объекта исключения (шаблон функции) | |
(C++11) | фиксирует текущее исключение в std::exception_ptr (функция) | |
(C++11) | генерирует исключение из std::exception_ptr (функция) | |
(C++11) | бросает свой аргумент с комбинированным std::nested_exception (шаблон функции) | |
(C++11) | генерирует исключение из std::nested_exception (шаблон функции) | |
функция, вызываемая при сбое обработки исключения (функция) | ||
(C++11) | получает текущий terminate_handler (функция) | |
изменяет функцию, вызываемую из std::terminate (функция) | ||
(C++11)(удалено в C++17) | получает текущий unexpected_handler (функция) | |
(удалено в C++17) | изменяет функцию, вызываемую из std::unexpected (функция) |
[править] Резюме
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; int uncaught_exceptions() noexcept; using exception_ptr = /* не указано */; exception_ptr current_exception() noexcept; [[noreturn]] void rethrow_exception(exception_ptr p); template<class E> exception_ptr make_exception_ptr(E e) noexcept; template<class T> [[noreturn]] void throw_with_nested(T&& t); template<class E> void rethrow_if_nested(const E& e); }
[править] Класс std::exception
namespace std { class exception { public: exception() noexcept; exception(const exception&) noexcept; exception& operator=(const exception&) noexcept; virtual ~exception(); virtual const char* what() const noexcept; }; }
[править] Класс std::bad_exception
namespace std { class bad_exception : public exception { public: // смотрите [исключение] для спецификации специальных функций-элементов const char* what() const noexcept override; }; }
[править] Класс std::nested_exception
namespace std { class nested_exception { public: nested_exception() noexcept; nested_exception(const nested_exception&) noexcept = default; nested_exception& operator=(const nested_exception&) noexcept = default; virtual ~nested_exception() = default; // функции доступа [[noreturn]] void rethrow_nested() const; exception_ptr nested_ptr() const noexcept; }; template<class T> [[noreturn]] void throw_with_nested(T&& t); template<class E> void rethrow_if_nested(const E& e); }