Std 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).

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).

std-range error-inheritance.svg

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‘s
copies 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).

std-range error-inheritance.svg

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 недоступная неоднозначная база этого эффекта.

Понравилась статья? Поделить с друзьями:
  • Std length error
  • Std error stream
  • Std error rust
  • Std error python
  • Std error of mean это