Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » с++ не могу разобраться с try catch

Ответить
Настройки темы
с++ не могу разобраться с try catch

Аватара для bezumes

Пользователь


Сообщения: 68
Благодарности: 1

Профиль | Отправить PM | Цитировать


Здравствуйте! мне надо чтобы если юзер вводит неверные данные ему было предложено вновь ввести данные заново.Почему этого не происходит
Код: Выделить весь код
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <conio.h>
typedef unsigned short int g;
int main()
{
	g b=0;g m=1;
	std::wcout.imbue(std::locale(".866"));
	for(g i=0;m==1;i++)
	{
	try
	{
	std::wcout<<L"Введите столбец по которому надо сортировать(меньше 10)";
	std::cin>>b;m=0;
	}
	catch(...){m=1;}
	}
	return EXIT_SUCCESS;
}

Отправлено: 19:27, 30-04-2006

 

Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


bezumes
а что должно происходить?
постарайтесь объяснить логику когда который вы написали... мне очень кажется что тогда вы сами сможете найти ошибку в нем...
(а пока я не вижу где у вас вообще кидаются эксепшены...)

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 19:33, 30-04-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Нужно добавить (до цикла):
Код: Выделить весь код
std::cin.exceptions(std::ios::badbit|std::ios::failbit);
По умолчанию все исключения отлавливаются, если они не разрешены. Это сделано для совместимости.
Предлагаю без исключений, в простых случаях это - лучший вариант
Код: Выделить весь код
do {
   ...
} while(!(std::cin >> value));
Или по-современному:
Код: Выделить весь код
struct subtask_t
{
    int fold_exceptions;
    int val;

    subtask_t() :
          fold_exceptions(std::cin.exceptions()),
          val()
    {
         std::cin.exceptions(std::ios::badbit|std::ios::failbit);
    }
    
     ~subtask_t()
    {
         std::cin.exceptions(fold_exceptions);
    }

    void operator()
    {
          for(;;)
          {
                try {
                   std::cin >> val;
                   return;
               }
               catch(std::ios::failure&)
               {
               }
          }
    }
}

Отправлено: 21:04, 04-05-2006 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » с++ не могу разобраться с try catch

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Не могу разобраться с хостингом WidZ Вебмастеру 2 28-01-2010 10:01
Не могу разобраться что случилось. poisonkit Microsoft Windows NT/2000/2003 3 14-07-2009 09:56
FreeBSD - Не могу разобраться с PF Tosha_l Общий по FreeBSD 4 10-12-2008 12:21
не могу разобраться в работе скрипта Sidelong Microsoft Windows NT/2000/2003 6 28-08-2007 12:47
Не могу разобраться! dddrive Непонятные проблемы с Железом 19 04-11-2006 14:08




 
Переход