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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 21:19   #1
Kasper1
Форумчанин
 
Аватар для Kasper1
 
Регистрация: 13.12.2010
Сообщений: 220
По умолчанию Использование исключений

Мне нужно сделать так, чтоб если я введу не число, чтоб выдало собственное исключение, чего-то данный код не срабатывает.
Получается в этмо коде, когда я ввожу число, выдаёт результат на экран всё нормально, когда же введу какие-то символы, выбрасывает консоль. Как сделать так, чтоб при вводе не числа, выдало исключение?

Код:
#include <iostream>
#include <string>
using namespace std;

class A{
public:
     void f(int z){
     setlocale(LC_ALL,"");
     cout<<"Вы передали число № "<<z; 
     }
};

int main() 
{
  A * obj = new A;
  try{
  setlocale(LC_ALL,"");
  int chislo;
  cout<<"Введите число -> ";
  cin>>chislo;
  obj->f(chislo);
  cin.ignore();
  cin.get();
  delete obj;
  }catch(int z){
       cout<<"Вы передали не число!";
	   cin.get();
  }


}

Последний раз редактировалось Kasper1; 18.12.2010 в 21:23.
Kasper1 вне форума Ответить с цитированием
Старый 18.12.2010, 22:58   #2
Kasper1
Форумчанин
 
Аватар для Kasper1
 
Регистрация: 13.12.2010
Сообщений: 220
По умолчанию

Вот так сработало:
Код:
#include <memory>
#include <conio.h>
#include <iostream>
#include <string>
using namespace std;
 
class A{
public:
     void f(int z){
     setlocale(LC_ALL,"");
     cout<<"Вы передали число № "<<z;
     }
};
 
int main()
{
  cin.exceptions ( istream::eofbit | istream::failbit | istream::badbit );
  //A * obj = new A;
  auto_ptr<A> obj(new A());
  try{
  setlocale(LC_ALL,"");
  int chislo;
  cout<<"Введите число -> ";
  cin>>chislo;
  obj->f(chislo);
  cin.ignore();
  cin.get();
    }catch (istream::failure& e){
       cout<<"Вы передали не число!";
  }

 getch();
  return 0;
}
Расшифруйте, вот это место желательно ясно. Что здесь делается?
Код:
 auto_ptr<A> obj(new A());
и вот это:
Код:
  cin.exceptions ( istream::eofbit | istream::failbit | istream::badbit );
Kasper1 вне форума Ответить с цитированием
Старый 18.12.2010, 23:11   #3
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
auto_ptr<A> obj(new A());
Это вроде называется "шаблонным классом"
Цитата:
cin.exceptions ( istream::eofbit | istream::failbit | istream::badbit );
А это вроде установка (настройка) исключений. Справочник лень открывать...
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Спецификация исключений Kn793 Общие вопросы C/C++ 3 28.06.2010 21:26
Обработка исключений _-Re@l-_ Общие вопросы Delphi 3 17.06.2010 08:53
обработка исключений scray PHP 3 15.05.2010 15:02
Программирование исключений Serjuk Общие вопросы C/C++ 2 03.05.2010 22:11
Обработка исключений try... except Kati Помощь студентам 5 07.03.2010 10:18