table of contents
std::exception(3) | C++ Standard Libary | std::exception(3) |
NAME¶
std::exception - std::exception
Synopsis¶
Defined in header <exception>
class exception;
Provides consistent interface to handle errors through the throw
expression.
All exceptions generated by the standard library inherit from
std::exception.
Member functions¶
constructor constructs the exception object
(public member function)
destructor destroys the exception object
[virtual] (virtual public member function)
operator= copies exception object
(public member function)
what returns an explanatory string
[virtual] (virtual public member function)
Standard exception requirements
Each standard library class T that derives from std::exception has the
following
publicly accessible member functions, each of them
do not exit with an exception
(until C++11)
having a non-throwing exception specification
(since C++11):
* default constructor (unless other constructors are provided)
* copy constructor
* copy assignment operator
The copy constructor and the copy assignment operator meet the following
postcondition:
* If two objects lhs and rhs both have dynamic type T and lhs is a copy of
rhs,
then std::strcmp(lhs.what(), rhs.what()) is equal to 0.
The what() member function of each such T satisfies the constraints specified
for
std::exception::what().
Standard exceptions
* logic_error
* invalid_argument
* domain_error
* length_error
* out_of_range
* future_error (since C++11)
* runtime_error
* range_error
* overflow_error
* underflow_error
* regex_error (since C++11)
* system_error (since C++11)
* ios_base::failure (since C++11)
* filesystem::filesystem_error (since C++17)
* tx_exception (TM TS)
* nonexistent_local_time (since C++20)
* ambiguous_local_time (since C++20)
* format_error (since C++20)
* bad_typeid
* bad_cast
* bad_any_cast (since C++17)
* bad_optional_access (since C++17)
* bad_expected_access (since C++23)
* bad_weak_ptr (since C++11)
* bad_function_call (since C++11)
* bad_alloc
* bad_array_new_length (since C++11)
* bad_exception
* ios_base::failure (until C++11)
* bad_variant_access (since C++17)
Defect reports
The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.
DR Applied to Behavior as published Correct behavior
LWG 471 C++98 there was no requirement on standard library added
classes derived from std::exception
2024.06.10 | http://cppreference.com |