Класс out_of_range
Класс out_of_range наследуется от класса logic_error и используется для сигнализации о том, что индекс или позиция выходят за допустимые границы контейнера или строки. Это исключение обычно выбрасывается методами, такими как at у вектора или строки, когда переданный индекс больше или равен размеру контейнера. Класс не имеет собственных параметров, но предоставляет конструктор, принимающий строку с описанием ошибки.
Синтаксис
#include <stdexcept>
class out_of_range : public logic_error {
public:
explicit out_of_range(const std::string& what_arg);
explicit out_of_range(const char* what_arg);
};
Пример
Давайте попробуем обратиться к элементу вектора по индексу, который превышает его размер, используя метод at:
#include <iostream>
#include <vector>
#include <stdexcept>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
try {
cout << vec.at(10) << endl;
}
catch (const out_of_range& e) {
cout << "Error: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
Error: vector::_M_range_check: __n (which is 10) >= this->size() (which is 5)
Пример
Давайте выбросим исключение out_of_range вручную, чтобы продемонстрировать его использование:
#include <iostream>
#include <stdexcept>
using namespace std;
int main()
{
try {
throw out_of_range("Index is out of bounds");
}
catch (const out_of_range& e) {
cout << "Caught: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Caught: Index is out of bounds"
Смотрите также
-
ключевое слово
throw,
которое выбрасывает исключение -
ключевое слово
try,
которое определяет блок для обработки исключений -
ключевое слово
catch,
которое перехватывает исключения -
класс
logic_error,
который является базовым для out_of_range