Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 18.09.2011
Сообщений: 77
1

try-throw-catch

04.12.2011, 19:18. Показов 1535. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <math.h>
 
using namespace std;
 
class Drob
{
 
public:
int obchuslennia (int a, int b);
void Init ();
int a,b,c;
    Drob(int _a,int _b) //конструктор
    {
        a=_a;
        b=_b;
    }
    };  
void Drob::Init ()
{
    cout<<"Введiть чисельник дробу"<<endl;
    cin>>a;
    cout<<"Введiть знаменник дробу"<<endl;
    cin>>b;
if(a==0) throw "\tДРIБ РIВНИЙ НУЛЮ";
if(b==0) throw "\tДIЛЕННЯ НА НУЛЬ";
if(a<b) throw "\tДРIБ ПРАВИЛЬНИЙ";
 
}
int obchuslennia (int _a, int _b)
{
int i;
for (i=0;_a>=_b;i++) _a-=_b;
return i;
}
 
void main()
{
int x;
setlocale( LC_ALL, "Ukrainian");
Drob obj(6,3);
cout<<"Бажаєте ввести дрiб з клавiатури?(1-так, iнше-нi)"<<endl;
cin>>x;
if(x==1) 
    {
        try
        {
            obj.Init();
        }
        catch (char*s)
        {
            cout<<"Error!!!"<<s<<endl;
            system("Pause");
            system("cls");
            obj.Init();
        }
    }
obj.c=obchuslennia (obj.a,obj.b);
cout<<"чисельник="<<obj.a<<endl;
cout<<"знаменник="<<obj.b<<endl;
cout<<"цiла частина="<<obj.c<<endl;
system("Pause");
system("cls");
}

программка в общем то рабочая. Есть три исключения у меня, при которых будет выдаватся ошибка. Если знаменатель равен нулю, если числитель равень нулю, и если числитель меньше знаменателя.
Все работает если во время работы программы вызвать только одно исключение. Если же вызвать одно, выдаст сообщение, дальше программа продолжает работу, и вызвать еще второе, то вылетает ошибка студии, и приходится прерывать програмку.
В ошибке вот такой текст:
Unhandled exception at 0x7547b760 in laba2 programming.exe: Microsoft C++ exception: char at memory location 0x0039f3f8..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2011, 19:18
Ответы с готовыми решениями:

throw, try, catch
Пожалуйста, помогите разобраться в том, что это такое, и как его правильно использовать. Где можно...

Try..catch..Throw
Объясните пожалуйста разницу. Желательно с примерами, например деление на ноль, ну или чтобы было...

try, catch, throw
пишу класс namespace mystd { const uint32_t def_size = 1 &lt;&lt; 20; //default memory container...

Try, catch, throw
Подскажите, как с помощью try, catch, throw, обработать исключение на вводимый тип данных?...

5
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 6
04.12.2011, 19:22 2
врядле кто будет вам делать)
0
0 / 0 / 1
Регистрация: 18.09.2011
Сообщений: 77
04.12.2011, 19:23  [ТС] 3
зачем ее делать? она готова, только подсказать что исправить.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
04.12.2011, 19:31 4
У вас исключение выбрасывается в блоке catch, а должно в try.

Добавлено через 33 секунды
C++
1
2
system("cls");
 obj.Init();
1
Заблокирован
04.12.2011, 19:34 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <math.h>
 
using namespace std;
 
class Drob
{
 
public:
int obchuslennia (int a, int b);
void Init ();
int a,b,c;
        Drob(int _a,int _b) //конструктор
        {
                a=_a;
                b=_b;
        }
        };      
void Drob::Init ()
{
        cout<<"Введiть чисельник дробу"<<endl;
        cin>>a;
        cout<<"Введiть знаменник дробу"<<endl;
        cin>>b;
if(a==0) throw "\tДРIБ РIВНИЙ НУЛЮ";
if(b==0) throw "\tДIЛЕННЯ НА НУЛЬ";
if(a<b) throw "\tДРIБ ПРАВИЛЬНИЙ";
 
}
int obchuslennia (int _a, int _b)
{
int i;
for (i=0;_a>=_b;i++) _a-=_b;
return i;
}
 
void main()
{
int x;
setlocale( LC_ALL, "Ukrainian");
Drob obj(6,3);
cout<<"Бажаєте ввести дрiб з клавiатури?(1-так, iнше-нi)"<<endl;
cin>>x;
if(x==1) 
        {
            label:
                try
                {
                        obj.Init();
                }
                catch (char*s)
                {
                        cout<<"Error!!!"<<s<<endl;
                        system("Pause");
                        system("cls");
                        goto label;
                }
        }
obj.c=obchuslennia (obj.a,obj.b);
cout<<"чисельник="<<obj.a<<endl;
cout<<"знаменник="<<obj.b<<endl;
cout<<"цiла частина="<<obj.c<<endl;
system("Pause");
system("cls");
}
1
0 / 0 / 1
Регистрация: 18.09.2011
Сообщений: 77
04.12.2011, 19:52  [ТС] 6
спасибо
0
04.12.2011, 19:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2011, 19:52
Помогаю со студенческими работами здесь

Try Throw Catch пример
Как-то не особо много инфы нарыл по данной теме... Может у кого есть какие уже реализованные...

Try,catch,throw,OVERFLOW!
Добрый вечер! И СНОВА с вами try..catch...:p Я очень долго пытался понять try-catch сам, читал...

try, throw, catch...обработка исключений
помогите разобраться с обработкой исключений...при вводе пароля больше 10 символов должна быть...

Try throw catch в решении уравнения
Есть уравнение y=1/sqrt(x-3). нужно считать x, пусть он будет целым. а затем с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru