Класс range_error
Класс range_error наследуется от класса runtime_error и
предназначен для генерации исключений, возникающих при выходе
результата вычислений за пределы допустимого диапазона значений.
Конструктор класса принимает строку с сообщением об ошибке, которую
впоследствии можно получить с помощью метода what.
Давайте рассмотрим особенности его работы на примерах.
Синтаксис
class range_error : public runtime_error;
Пример
Давайте создадим исключение range_error и перехватим его
с помощью блока try...catch:
#include <iostream>
#include <stdexcept>
using namespace std;
int main()
{
try
{
throw range_error("Value out of range");
}
catch (const range_error& e)
{
cout << "Caught range_error: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Caught range_error: Value out of range"
Пример
Давайте продемонстрируем, как range_error может быть
перехвачен как базовый класс runtime_error:
#include <iostream>
#include <stdexcept>
using namespace std;
int main()
{
try
{
throw range_error("Result is too large");
}
catch (const runtime_error& e)
{
cout << "Caught as runtime_error: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Caught as runtime_error: Result is too large"
Пример
Давайте рассмотрим практический пример, где вычисленное значение выходит за пределы допустимого диапазона:
#include <iostream>
#include <stdexcept>
using namespace std;
int main()
{
try
{
int min_val = 0;
int max_val = 100;
int res = 150;
if (res < min_val || res > max_val)
{
throw range_error("Result out of valid range");
}
cout << res << endl;
}
catch (const range_error& e)
{
cout << "Error: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Error: Result out of valid range"
Смотрите также
-
класс
runtime_error,
который является базовым классом для range_error -
класс
out_of_range,
который сообщает о выходе за пределы допустимых значений -
класс
overflow_error,
который сообщает о переполнении -
оператор
throw,
который генерирует исключение