Класс length_error
Класс length_error наследуется от класса logic_error и используется для генерации исключений, когда программа пытается создать объект, длина которого превышает максимально допустимый размер. Чаще всего это исключение возникает при работе с контейнерами, например, при вызове метода resize у вектора или строки, если запрошенный размер превышает max_size.
Синтаксис
#include <stdexcept>
class length_error : public logic_error;
Пример
Давайте попробуем запросить у вектора размер, превышающий его максимально возможный размер, и перехватим исключение:
#include <iostream>
#include <vector>
#include <stdexcept>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
try
{
vec.resize(vec.max_size() + 1);
}
catch (const length_error& e)
{
cout << "Error: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Error: vector::_M_default_append"
Пример
Давайте явно выбросим исключение length_error с собственным сообщением и обработаем его:
#include <iostream>
#include <stdexcept>
using namespace std;
int main()
{
try
{
throw length_error("Requested length is too large");
}
catch (const length_error& e)
{
cout << "Caught: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Caught: Requested length is too large"
Смотрите также
-
класс
logic_error,
который является базовым для логических ошибок -
класс
out_of_range,
который сигнализирует о выходе за пределы диапазона -
оператор
throw,
который выбрасывает исключение -
оператор
catch,
который перехватывает исключение