Заголовочный файл стандартной библиотеки <exception> — cppreference.com
Материал из 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); }