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