Scroll to navigation

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