Defines a type of object to be thrown as exception. It can be used to report range errors (that is, situations where a result of a computation cannot be represented by the destination type).
The only standard library components that throw this exception are std::wstring_convert::from_bytes and std::wstring_convert::to_bytes.
The mathematical functions in the standard library components do not throw this exception (mathematical functions report range errors as specified in math_errhandling).
Inheritance diagram
Contents
- 1 Member functions
- 2 std::range_error::range_error
- 2.1 Parameters
- 2.2 Exceptions
- 2.3 Notes
- 3 std::range_error::operator=
- 3.1 Parameters
- 3.2 Return value
- 3.3 Notes
- 4 Inherited from std::runtime_error
- 5 Inherited from std::exception
- 5.1 Member functions
- 5.2 Defect reports
[edit] Member functions
constructs a new range_error object with the given message (public member function) |
|
replaces the range_error object (public member function) |
std::range_error::range_error
range_error( const std::string& what_arg ); |
(1) | |
range_error( const char* what_arg ); |
(2) | |
(3) | ||
range_error( const range_error& other ); |
(until C++11) | |
range_error( const range_error& other ) noexcept; |
(since C++11) | |
1) Constructs the exception object with what_arg as explanatory string. After construction, std::strcmp(what(), what_arg.c_str()) == 0.
2) Constructs the exception object with what_arg as explanatory string. After construction, std::strcmp(what(), what_arg) == 0.
3) Copy constructor. If *this and other both have dynamic type std::range_error
then std::strcmp(what(), other.what()) == 0. No exception can be thrown from the copy constructor. (until C++11)
Parameters
what_arg | — | explanatory string |
other | — | another exception object to copy |
Exceptions
Notes
Because copying std::range_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.
Before the resolution of LWG issue 254, the non-copy constructor can only accept std::string. It makes dynamic allocation mandatory in order to construct a std::string object.
After the resolution of LWG issue 471, a derived standard exception class must have a publicly accessible copy constructor. It can be implicitly defined as long as the explanatory strings obtained by what()
are the same for the original object and the copied object.
std::range_error::operator=
range_error& operator=( const range_error& other ); |
(until C++11) | |
range_error& operator=( const range_error& other ) noexcept; |
(since C++11) | |
Assigns the contents with those of other. If *this and other both have dynamic type std::range_error
then std::strcmp(what(), other.what()) == 0 after assignment. No exception can be thrown from the copy assignment operator. (until C++11)
Parameters
other | — | another exception object to assign with |
Return value
*this
Notes
After the resolution of LWG issue 471, a derived standard exception class must have a publicly accessible copy assignment operator. It can be implicitly defined as long as the explanatory strings obtained by what()
are the same for the original object and the copied object.
Inherited from std::exception
Member functions
destroys the exception object (virtual public member function of std::exception ) [edit]
|
|
returns an explanatory string (virtual public member function of std::exception ) [edit]
|
[edit] 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 254 | C++98 | the constructor accepting const char* was missing | added |
LWG 471 | C++98 | the explanatory strings of std::range_error ‘scopies were implementation-defined |
they are the same as that of the original std::range_error object
|
Defined in header <stdexcept> |
||
---|---|---|
class range_error; |
Defines a type of object to be thrown as exception. It can be used to report range errors (that is, situations where a result of a computation cannot be represented by the destination type).
The only standard library components that throw this exception are std::wstring_convert::from_bytes
and std::wstring_convert::to_bytes
.
The mathematical functions in the standard library components do not throw this exception (mathematical functions report range errors as specified in math_errhandling
).
Inheritance diagram.
Member functions
(constructor) |
constructs a new range_error object with the given message (public member function) |
operator= |
replaces the range_error object (public member function) |
what |
returns the explanatory string (public member function) |
std::range_error::range_error
range_error( const std::string& what_arg ); |
(1) | |
range_error( const char* what_arg ); |
(2) | (since C++11) |
(3) | ||
range_error( const range_error& other ); |
(until C++11) | |
range_error( const range_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::range_error
then std::strcmp(what(), other.what()) == 0
. (since C++11)
Parameters
what_arg | — | explanatory string |
other | — | another exception object to copy |
Exceptions
Notes
Because copying std::range_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::range_error::operator=
range_error& operator=( const range_error& other ); |
(until C++11) | |
range_error& operator=( const range_error& other ) noexcept; |
(since C++11) |
Assigns the contents with those of other
. If *this
and other
both have dynamic type std::range_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::range_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::runtime_error
Inherited from std::exception
Member functions
[virtual] |
destroys the exception object (virtual public member function of std::exception ) |
[virtual] |
returns an explanatory string (virtual public member function of std::exception ) |
Свойство определяет тип бросаемого объекта как исключение.Может использоваться для сообщения об ошибках диапазона (т.е.ситуациях,когда результат вычисления не может быть представлен типом назначения).
Единственными компонентами стандартной библиотеки, вызывающими это исключение, являются std::wstring_convert::from_bytes
и std::wstring_convert::to_bytes
.
Математические функции в компонентах стандартной библиотеки не выдают это исключение (математические функции сообщают об ошибках диапазона, как указано в math_errhandling
).
Member functions
(constructor) |
создает новый объект range_error с заданным сообщением(функция публичного члена) |
operator= |
заменяет объект range_error (функция публичного члена) |
what |
возвращает пояснительную строку (функция публичного члена) |
std::range_error::range_error
range_error( const std::string& what_arg ); |
(1) | |
range_error( const char* what_arg ); |
(2) | (since C++11) |
(3) | ||
range_error( const range_error& other );
|
(until C++11) | |
range_error( const range_error& other ) noexcept; |
(since C++11) |
1-2) Создает объект исключения с what_arg
в качестве пояснительной строки, к которой можно получить доступ через what()
.
3) Конструктор копирования. Если *this
и other
имеют динамический тип std::range_error
, то std::strcmp(what(), other.what()) == 0
(начиная с C++11).
Parameters
what_arg | — | explanatory string |
other | — | другой объект исключения для копирования |
Exceptions
Notes
Поскольку копирование std::range_error
не разрешает генерировать исключения, это сообщение обычно хранится внутри как отдельно выделенная строка с подсчетом ссылок. По этой же причине нет конструктора, принимающего std::string&&
: ему бы все равно пришлось копировать содержимое.
std::range_error::operator=
range_error& operator=( const range_error& other ); |
(until C++11) | |
range_error& operator=( const range_error& other ) noexcept; |
(since C++11) |
Сопоставляет содержимое с содержимым other
. Если *this
и other
имеют динамический тип std::range_error
, то std::strcmp(what(), other.what()) == 0
после присваивания (начиная с C++11).
Parameters
other | — | другой объект исключения для присвоения |
Return value
*this
.
std::range_error::what
virtual const char* what() const throw(); |
(until C++11) | |
virtual const char* what() const noexcept;
|
(since C++11) |
Возвращает пояснительную строку.
Parameters
(none).
Return value
Указатель на завершающуюся нулем строку с пояснительной информацией. Строка подходит для преобразования и отображения в виде std::wstring
. Указатель гарантированно действителен, по крайней мере, до тех пор, пока объект исключения, из которого он получен, не будет уничтожен, или пока не будет вызвана неконстантная функция-член (например, оператор присваивания копии) для объекта исключения.
Notes
Реализации разрешены, но не обязаны переопределять what()
.
Унаследовано от std::runtime_error
Наследуется от std :: exception
Member functions
[virtual] |
уничтожает объект исключения (виртуальная публичная функция-член std::exception ) |
[virtual] |
возвращает пояснительную строку (виртуальная публичная функция-член std::exception ) |
C++
-
std::out_of_range
Определяет тип объекта,который будет выброшен в качестве исключения.
-
std::overflow_error
Определяет тип объекта,который будет выброшен в качестве исключения.
-
std::rethrow_exception
Выбрасывает ранее захваченный объект исключения,на который ссылается указатель или копия этого указателя Не определено,была ли сделана копия.
-
std::rethrow_if_nested
Если E не является полиморфным типом класса,то std::nested_exception недоступная неоднозначная база этого эффекта.