std::domain_error(3) | C++ Standard Libary | std::domain_error(3) |
NAME¶
std::domain_error - std::domain_error
Synopsis¶
Defined in header <stdexcept>
class domain_error;
Defines a type of object to be thrown as exception. It may be used by the
implementation to report domain errors, that is, situations where the inputs
are
outside of the domain on which an operation is defined.
The standard library components do not throw this exception (mathematical
functions
report domain errors as specified in math_errhandling). Third-party
libraries,
however, use this. For example, boost.math throws std::domain_error if
boost::math::policies::throw_on_error is enabled (the default setting).
std-domain error-inheritance.svg
Inheritance diagram
Member functions¶
constructor constructs a new domain_error object with the given
message
(public member function)
operator= replaces the domain_error object
(public member function)
what returns the explanatory string
(public member function)
std::domain_error::domain_error
domain_error( const std::string& what_arg ); (1)
domain_error( const char* what_arg ); (2) (since C++11)
domain_error( const domain_error& other ); (3) (until
C++11)
domain_error( const domain_error& other ) noexcept; (since
C++11)
1-2) Constructs the exception object with what_arg as explanatory string that
can be
accessed through what().
3) Copy constructor.
If *this and other both have dynamic type std::domain_error then
std::strcmp(what(),
other.what()) == 0.
(since C++11)
Parameters¶
what_arg - explanatory string
other - another exception object to copy
Exceptions¶
1-2) May throw std::bad_alloc
Notes¶
Because copying std::domain_error is not permitted to throw
exceptions, this message
is typically stored internally as a separately-allocated reference-counted
string.
This is also why there is no constructor taking std::string&&: it
would have to copy
the content anyway.
std::domain_error::operator=
domain_error& operator=( const domain_error& other ); (until
C++11)
domain_error& operator=( const domain_error& other ) noexcept;
(since C++11)
Assigns the contents with those of other.
If *this and other both have dynamic type std::domain_error then
std::strcmp(what(),
other.what()) == 0 after assignment.
(since C++11)
Parameters¶
other - another exception object to assign with
Return value¶
*this
std::domain_error::what
virtual const char* what() const throw(); (until C++11)
virtual const char* what() const noexcept; (since C++11)
Returns the explanatory string.
Parameters¶
(none)
Return value¶
Pointer to a null-terminated string with explanatory information.
The string is
suitable for conversion and display as a std::wstring. The pointer is
guaranteed to
be valid at least until the exception object from which it is obtained is
destroyed,
or until a non-const member function (e.g. copy assignment operator) on the
exception object is called.
Notes¶
Implementations are allowed but not required to override what().
Inherited from std::logic_error
Inherited from std::exception
Member functions¶
destructor destroys the exception object
[virtual] (virtual public member function of std::exception)
what returns an explanatory string
[virtual] (virtual public member function of
std::exception)
2022.07.31 | http://cppreference.com |