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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Сечко
0 / 0 / 0
Регистрация: 15.03.2010
Сообщений: 19
#1

клас обработчик - C++

21.05.2010, 14:57. Просмотров 398. Ответов 1
Метки нет (Все метки)

Написать класс обработчик исключительных ситуаций. Программа ловит ошибкуделения на нуль и выводитсообщение,вв какой части программы произошла ошибка.


Ребята помогите с задачей пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2010, 14:57     клас обработчик
Посмотрите здесь:

C++ создать клас HugeInt
C++ Простой клас Student
C++ Векторы+клас
C++ матрица. клас
C++ матрица. клас. 2
Как создать клас Fraction C++
переделать клас C++
Клас колода карт C++
C++ клас Letter, клас Person
C++ клас myDate
клас птиц C++
Клас многочлен наследствие C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
 Аватар для Mr.X
3021 / 1677 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
21.05.2010, 19:16     клас обработчик #2
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//Написать класс обработчик исключительных ситуаций.
//Программа ловит ошибку деления на ноль и выводит сообщение, 
//в какой части программы произошла ошибка.
#include <stdexcept>
#include <iostream>
#include <sstream>
#include <string>
#include <locale>
#include <ctime>
#include <cstdlib>
 
int generate_0_or_not_0()
{
    return rand() % 4;
}
 
class division_by_zero : public std::runtime_error
{
public:
    division_by_zero(long line_num) 
        : std::runtime_error(make_what(line_num))
    {}
private:
    std::string  make_what(long line_num)
    {
        std::ostringstream out;
        out << "Деление на нуль в строке "            
            << line_num
            << " файла "
            << __FILE__
            << ".";
 
        return out.str();
    }
};
 
int main()
{
    std::locale::global(std::locale("rus"));
    srand(static_cast<unsigned>(time(0)));
    try
    {     
        int x = 29;
        int n;
        int a = generate_0_or_not_0();
        if(a == 0)
        {
            throw division_by_zero(__LINE__);
        }        
        std::cout << x / a
                  << std::endl;
 
        int b = generate_0_or_not_0();
        if(b == 0)
        {
            throw division_by_zero(__LINE__);
        }        
        std::cout << x / b
                  << std::endl;
 
        int c = generate_0_or_not_0();
        if(c == 0)
        {
            throw division_by_zero(__LINE__);
        }        
        std::cout << x / c
                  << std::endl;
 
        int d = generate_0_or_not_0();
        if(d == 0)
        {
            throw division_by_zero(__LINE__);
        }        
        std::cout << x / d
                  << std::endl;
    }
    catch(division_by_zero& e)    
    {
        std::cerr << e.what()
                  << std::endl
                  << std::endl;
        exit(EXIT_FAILURE);
    }    
    return 0;
}
Yandex
Объявления
21.05.2010, 19:16     клас обработчик
Ответ Создать тему
Опции темы

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