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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2010, 21:46   #1
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию Программирование исключений

Здравствуйте.Возник вопрос насчет программирования исключений.
Собственно код:
файл main
Код:
main ()
{
try{
    getRunning();
}

catch ( Ex_DivideByZero ex) {

cout << ex.getMessage1() << endl;
}
catch ( Ex_DivideByZero ex) {

cout << ex.getMessage2() << endl;
}
catch ( Ex_DivideByZero ex) {

cout << ex.getMessage3() << endl;
}
catch ( Ex_DivideByZero ex) {

cout << ex.getMessage4() << endl;

}
catch (Ex_DivideByZero ex) {

cout << ex.getMessage5() << endl;
}
}
Файл getRunning
Код:
int getRunning(){

    cout<<"введите цифру в диапазоне от 1 до 5 "<<endl;
    cin>>mot;
 switch (mot) {
case 1:
throw Ex_DivideByZero();
break;
case 2:
throw Ex_DivideByZero();
break;
case 3:
throw Ex_DivideByZero();
break;
case 4:
throw Ex_DivideByZero();
break;
case 5:
throw Ex_DivideByZero();
break;
} 

}
Файл Ex_DivideByZero;
Код:
class Ex_DivideByZero {
public:


char * getMessage1() const { return "1";}
char * getMessage2() const { return "2";}
char * getMessage3() const { return "3";}
char * getMessage4() const { return "4";}
char * getMessage5() const { return "5";}


};
Правильно что-то не работает..Подскажите в чем проблемка?
Serjuk вне форума Ответить с цитированием
Старый 03.05.2010, 22:03   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Вот так будет правильно
Код:
#include <stdexcept>
#include <iostream>

using namespace std;

class Ex_DivideByZero1 : public runtime_error
{
public:
	Ex_DivideByZero1::Ex_DivideByZero1() : runtime_error("1"){}
};

class Ex_DivideByZero2 : public runtime_error
{
public:
	Ex_DivideByZero2::Ex_DivideByZero2() : runtime_error("2"){}
};

class Ex_DivideByZero3 : public runtime_error
{
public:
	Ex_DivideByZero3::Ex_DivideByZero3() : runtime_error("3"){}
};

class Ex_DivideByZero4 : public runtime_error
{
public:
	Ex_DivideByZero4::Ex_DivideByZero4() : runtime_error("4"){}
};
class Ex_DivideByZero5 : public runtime_error
{
public:
	Ex_DivideByZero5::Ex_DivideByZero5() : runtime_error("5"){}
};


int getRunning()
{
	int mot;
	cout<<"введите цифру в диапазоне от 1 до 5 "<<endl;
    cin>>mot;
	switch (mot) {
case 1:
throw Ex_DivideByZero1();
break;
case 2:
throw Ex_DivideByZero2();
break;
case 3:
throw Ex_DivideByZero3();
break;
case 4:
throw Ex_DivideByZero4();
break;
case 5:
throw Ex_DivideByZero5();
break;
} 

}


int main ()
{
try
{
    getRunning();
}
catch ( Ex_DivideByZero1 ex) 
{
	cout << ex.what() << endl;
}
catch ( Ex_DivideByZero2 ex) 
{
	cout << ex.what() << endl;
}
catch ( Ex_DivideByZero3 ex) 
{
	cout << ex.what() << endl;
}
catch ( Ex_DivideByZero4 ex) 
{
	cout << ex.what() << endl;
}
catch ( Ex_DivideByZero5 ex) 
{
	cout << ex.what() << endl;
}
return 0;
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 03.05.2010, 22:11   #3
Nick Alte
 
Регистрация: 24.04.2010
Сообщений: 4
По умолчанию

Поскольку ты ловишь во всех catch исключение одного и того же типа, естественно, что уже первый из них ловит все бросаемые исключения. Сделай классы исключений разного типа (например, через шаблон с параметром int) и бросай-лови на здоровье.
Nick Alte вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка исключений scray PHP 3 15.05.2010 15:02
Обработка исключений try... except Kati Помощь студентам 5 07.03.2010 10:18
mysql_connect - обработка исключений crazy horse PHP 15 10.02.2009 13:52
Обработчик исключений Delphi xxxPascalxxx Помощь студентам 5 30.11.2008 06:37