Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2012, 18:41   #1
Snorlax712
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию Обработка исключений - C++

Всем привет. Одна из задач: предусмотреть обработку исключений при ошибке ввода с клавиатуры. Т.е. например надо ввести число, а пользователь вводит символ. Пробовал что-то такое:

Код:
...
try {
if (!(cin >> a[i][j])) i = 2;
  error(i);
  } catch (...) {
    do { cout << "Perehvat oshibki! Vvedite chislo: "; 
	} while (!(cin >> a[i][j])); }
...
void error(int i) {
	if (i) throw i;
}
Компилируется но при выполнении бесконечно выводит в поток меседж. Помогите.
Snorlax712 вне форума Ответить с цитированием
Старый 26.04.2012, 18:47   #2
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

можно написать свой класс исключения.
class NotNumericException{};
try
{
//читаем
if(!numeric) //тут проверка
throw NotNumericException();
}catch(NotNumericException &e)
{
cout << "Perehvat oshibki! Vvedite chislo: ";
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 26.04.2012, 20:00   #3
Snorlax712
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

интересует вариант без класса
Snorlax712 вне форума Ответить с цитированием
Старый 27.04.2012, 00:53   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Snorlax712

предусмотреть обработку исключений при ошибке ввода с клавиатуры

чтобы потоки бросались какашками исключениями в пользователя, сначала их надобно включить. гоогли про метод exceptions()
Rififi вне форума Ответить с цитированием
Старый 08.05.2012, 18:50   #5
Trigger man
Пользователь
 
Аватар для Trigger man
 
Регистрация: 03.05.2012
Сообщений: 21
По умолчанию

Вот так работает. Тут я правда другую переменную ввел.
Код:
	int n;

	try
	{
		cout << "Введите число: ";
		if ( !(cin >> n) ) throw "Неправильный ввод. Нужно ввести число";
	}
	catch (char *str_exception)
	{
		cout << str_exception << endl;
		n = 0;
	}
Или еще вот так можно
Код:
       int n;

	cout << "Введите целое число: ";
	while ( !(cin >> n) )
	{
		cin.clear();
		while ( cin.get() != '\n' ) continue;

		cout << "Ошибка! Введите целое число: ";
	}

Последний раз редактировалось Trigger man; 08.05.2012 в 19:08.
Trigger man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# обработка исключений NeoX_2011 Помощь студентам 3 19.03.2012 01:04
Обработка исключений Ckomoroh Общие вопросы Delphi 6 21.03.2011 08:52
Обработка исключений _-Re@l-_ Общие вопросы Delphi 3 17.06.2010 08:53
обработка исключений scray PHP 3 15.05.2010 15:02
Обработка исключений try... except Kati Помощь студентам 5 07.03.2010 10:18