Форум программистов, компьютерный форум CyberForum.ru

try-throw-catch - C++

Восстановить пароль Регистрация
 
lavengerl
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 77
04.12.2011, 19:18     try-throw-catch #1
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..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2011, 19:18     try-throw-catch
Посмотрите здесь:

C++ throw, try, catch
Try..catch..Throw C++
Try Throw Catch пример C++
try, throw, catch...обработка исключений C++
C++ try, catch, throw
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Propel
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 6
04.12.2011, 19:22     try-throw-catch #2
врядле кто будет вам делать)
lavengerl
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 77
04.12.2011, 19:23  [ТС]     try-throw-catch #3
зачем ее делать? она готова, только подсказать что исправить.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
04.12.2011, 19:31     try-throw-catch #4
У вас исключение выбрасывается в блоке catch, а должно в try.

Добавлено через 33 секунды
C++
1
2
system("cls");
 obj.Init();
LosAngeles
Заблокирован
04.12.2011, 19:34     try-throw-catch #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");
}
lavengerl
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 77
04.12.2011, 19:52  [ТС]     try-throw-catch #6
спасибо
Yandex
Объявления
04.12.2011, 19:52     try-throw-catch
Ответ Создать тему
Опции темы

Текущее время: 11:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru