std::logic_error(3) | C++ Standard Libary | std::logic_error(3) |
NAME¶
std::logic_error - std::logic_error
Synopsis¶
Defined in header <stdexcept>
class logic_error;
Defines a type of object to be thrown as exception. It reports errors that
are a
consequence of faulty logic within the program such as violating logical
preconditions or class invariants and may be preventable.
No standard library components throw this exception directly, but the
exception
types std::invalid_argument, std::domain_error, std::length_error,
std::out_of_range, std::future_error, and
std::experimental::bad_optional_access are
derived from std::logic_error.
std-logic error-inheritance.svg
Inheritance diagram
Member functions¶
constructor constructs a new logic_error object with the given
message
(public member function)
operator= replaces the logic_error object
(public member function)
what returns the explanatory string
(public member function)
std::logic_error::logic_error
logic_error( const std::string& what_arg ); (1)
logic_error( const char* what_arg ); (2) (since C++11)
logic_error( const logic_error& other ); (3) (until C++11)
logic_error( const logic_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::logic_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::logic_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::logic_error::operator=
logic_error& operator=( const logic_error& other ); (until
C++11)
logic_error& operator=( const logic_error& other ) noexcept;
(since C++11)
Assigns the contents with those of other.
If *this and other both have dynamic type std::logic_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::logic_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::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 |