Как с помощью try и catch проверить вводимые данные?
Есть код, в котором заполняется массив чисел. Как в нем сделать правильную проверку данных, что бы был переход к catch. И исключительная ситуация была найдена.
void Arr::Input()
{
for (int i = 0; i < size; i++)
{
cout << "Введите " << i + 1 << " элемент массива: ";
cin >>arr[i];
try
{
cin.fail() == 0;
}
catch(const exception &ex)
{
cout << "Ошибка: Некорректный ввод!" << endl;
cin.clear();
cin.ignore(10, '\n');
i--;
}
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Можно так:
cin.exceptions(cin.failbit);
for (int i = 0; i < size; i++)
{
try {
cout << "Введите " << i + 1 << " элемент массива: ";
cin >>arr[i];
}
catch(const exception &ex)
{
cout << "Ошибка: Некорректный ввод!" << endl;
cout << ex.what() << endl;
cin.clear();
cin.ignore(10, '\n');
i--;
}
}