Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
#1

С++, отловить исключение - C++

02.03.2011, 12:52. Просмотров 729. Ответов 2
Метки нет (Все метки)

Немного странный вопрос:
Есть класс А, от него наследуется класс Б.
В конструкторе класса А может генерироваться некое исключение.
Возможно ли его отловить в конструкторе класса Б.(Как? (: )
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2011, 12:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос С++, отловить исключение (C++):

Что я сделал не так?Возникло необработанное исключение по адресу 0x7434A9F2 : исключение Microsoft C++: std
//Калькулятор Intrigger #include<iostream> #include<conio.h> ...

Как отловить переполнения?
Есть проект dll, в в нём экспортируемая функция, возвращающая BOOL, требуется...

Отловить запуск процесса
Здравствуйте. Хотелось бы узнать как на c++ можно проверить включение...

Отловить деление на ноль
Как в программа отловить деление на ноль? Есть программа в которой за тактов...

Отловить нажатие Enter
Доброй всем ночи, у меня вопрос. Я написал код который должен отловить нажатие...

Как отловить +/-INF и NAN?
Здравствуйте. Проблема в возникновении в ходе вычислений указанных в заголовке...

2
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
02.03.2011, 15:29 #2
Лучший ответ Сообщение было отмечено GAME как решение

Решение

Вот так можно:
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
86
87
88
89
/////////////////////////////////////////////////////////////////////////////////////////
//Есть класс А, от него наследуется класс Б.
//В конструкторе класса А может генерироваться некое исключение.
//Возможно ли его отловить в конструкторе класса Б.(Как? (: )
/////////////////////////////////////////////////////////////////////////////////////////
#include <cstdlib>
#include <ctime>
#include <exception>
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
struct A_exeption : public std::exception
{
    A_exeption() : exception("A_exeption")
    {}
};
/////////////////////////////////////////////////////////////////////////////////////////
class A
{
    int  a_;
public:
    A(int  a = 0)
    try
    : a_(a)
    {
        std::cout << "Работает конструктор класса A."
                  << std::endl;
        if(a_)
        {
            std::cout << "В конструкторе класса A сгенерировано исключение A_exeption."
                      << std::endl;
            throw  A_exeption();
        }
    }
    catch(...)
    {
        std::cout << "В кострукторе класса A перехвачено какое-то исключение и вновь сгенерировано."
                  << std::endl;
        throw;
    }
    //-----------------------------------------------------------------------------------
    virtual ~A()
    {
        std::cout << "Работает деструктор класса A."
                  << std::endl;
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
class B : public A
{    
public:
    B(int  b = 0)
    try
        : A(b)
    {
        std::cout << "Работает конструктор класса B."
                  << std::endl;
    }    
    catch(const std::exception&  e)
    {
        std::cout << "В конструкторе класса B перехвачено исключение "                  
                  << e.what()
                  << "."
                  << std::endl;
    }
    //-----------------------------------------------------------------------------------
    virtual ~B()
    {
        std::cout << "Работает деструктор класса B."
                  << std::endl;
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    srand(static_cast<unsigned>(time(0)));
 
    try
    {
        B  b(rand() % 2);
    }
    catch(const std::exception&  e)
    {
        std::cout << "В функции main обрабатывается исключение "
                  << e.what()
                  << "."
                  << std::endl;
    }
}
1
GAME
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
02.03.2011, 21:51  [ТС] #3
Mr.X, спасибо огромное - это то,что нужно =)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2011, 21:51
Привет! Вот еще темы с решениями:

Как отловить буфер обмена!?
Как мне сделать так чтобы программа, если она запущена, каждую секудну смотрела...

Как отловить закрытие программы?
Не знаю как описать проблему, поэтому просто опишу, своими словами. На форме...

Не могу отловить крайние случаи
Всем привет. Зарегистрировался на одном из многочисленных онлайн курсов по С++....

отловить переполнение типа данных
Здравствуйте:) У меня возник вопрос по сабжу. допустим мы присваиваем...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru