libstdc++: Exceptions (original) (raw)
Classes | |
---|---|
class | __cxxabiv1::__forced_unwind |
class | std::bad_alloc |
class | std::experimental::fundamentals_v1::bad_any_cast |
class | std::bad_cast |
class | std::bad_exception |
class | std::bad_function_call |
class | std::experimental::fundamentals_v1::bad_optional_access |
class | std::bad_typeid |
class | std::bad_weak_ptr |
class | std::domain_error |
class | std::exception |
class | std::__unspecified__::exception_ptr |
class | std::ios_base::failure |
struct | __gnu_cxx::forced_error |
class | std::future_error |
class | std::invalid_argument |
class | std::length_error |
class | std::logic_error |
class | std::nested_exception |
class | std::out_of_range |
class | std::overflow_error |
class | std::range_error |
class | __gnu_cxx::recursive_init_error |
class | std::regex_error |
class | std::runtime_error |
class | std::system_error |
class | std::underflow_error |
Functions | |
---|---|
void | __gnu_cxx::__verbose_terminate_handler () |
exception_ptr | std::current_exception () noexcept |
terminate_handler | std::get_terminate () noexcept |
unexpected_handler | std::get_unexpected () noexcept |
template<typename _Ex > | |
exception_ptr | std::make_exception_ptr (_Ex __ex) noexcept |
void | std::rethrow_exception (exception_ptr) |
template<typename _Ex > | |
void | std::rethrow_if_nested (const _Ex &__ex) |
terminate_handler | std::set_terminate (terminate_handler) noexcept |
unexpected_handler | std::set_unexpected (unexpected_handler) noexcept |
void | std::terminate () noexcept |
template<typename _Tp > | |
void | std::throw_with_nested (_Tp &&__t) |
bool | std::uncaught_exception () noexcept |
void | std::unexpected () |
Since
C++98
Classes and functions for reporting errors via exceptions.
◆ terminate_handler
typedef void(* std::terminate_handler) ()
If you write a replacement terminate handler, it must be of this type.
Definition at line 69 of file exception.
◆ unexpected_handler
typedef void(* std::unexpected_handler) ()
If you write a replacement unexpected handler, it must be of this type.
Definition at line 85 of file exception.
◆ __verbose_terminate_handler()
void __gnu_cxx::__verbose_terminate_handler | ( | ) |
---|
◆ current_exception()
Obtain an exception_ptr to the currently handled exception.
If there is none, or the currently handled exception is foreign, return the null value.
Since
C++11
Referenced by std::make_exception_ptr().
◆ get_terminate()
Return the current terminate handler.
◆ get_unexpected()
Return the current unexpected handler.
Since
C++11
Removed from the C++ standard in C++17
◆ make_exception_ptr()
◆ rethrow_exception()
◆ rethrow_if_nested()
template<typename _Ex >
void std::rethrow_if_nested ( const _Ex & __ex) | inline |
---|
Rethrow a nested exception
If __ex
contains a std::nested_exception
object, call its rethrow_nested()
member to rethrow the stored exception.
After catching an exception thrown by a call to std::throw_with_nested
this function can be used to rethrow the exception that was active when std::throw_with_nested
was called.
Since
C++11
Definition at line 208 of file nested_exception.h.
◆ set_terminate()
Takes a new handler function as an argument, returns the old function.
◆ set_unexpected()
Takes a new handler function as an argument, returns the old function.
Removed from the C++ standard in C++17
◆ terminate()
void std::terminate ( ) | noexcept |
---|
◆ throw_with_nested()
template<typename _Tp >
void std::throw_with_nested ( _Tp && __t) | inline |
---|
Throw an exception that also stores the currently active exception.
If _Tp
is derived from std::nested_exception
or is not usable as a base-class, throws a copy of __t
. Otherwise, throws an object of an implementation-defined type derived from both _Tp
and std::nested_exception
, containing a copy of __t
and the result of std::current_exception()
.
In other words, throws the argument as a new exception that contains the currently active exception nested within it. This is intended for use in a catch handler to replace the caught exception with a different type, while still preserving the original exception. When the new exception is caught, the nested exception can be rethrown by using std::rethrow_if_nested
.
This can be used at API boundaries, for example to catch a library's internal exception type and rethrow it nested with a std::runtime_error
, or vice versa.
Since
C++11
Definition at line 148 of file nested_exception.h.
◆ uncaught_exception()
bool std::uncaught_exception ( ) | noexcept |
---|
[18.6.4]/1: 'Returns true after completing evaluation of a throw-expression until either completing initialization of the exception-declaration in the matching handler or entering unexpected()
due to the throw; or after entering terminate()
for any reason other than an explicit call to terminate()
. [Note: This includes stack unwinding [15.2]. end note]'
2: 'When uncaught_exception()
is true, throwing an exception can result in a call of 1terminate()‘ (15.5.1).’
Referenced by std::basic_ostream< _CharT, _Traits >::sentry::~sentry().
◆ unexpected()
The runtime will call this function if an exception is thrown which violates the function's exception specification.
Removed from the C++ standard in C++17