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

Генерация исключения в конструкторе - C++

Восстановить пароль Регистрация
 
Cer9
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 23
04.05.2014, 17:17     Генерация исключения в конструкторе #1
Добрый вечер! У меня возник вопрос с генерацией и перехватом исключений. Имеется код:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Mystring {
protected:
    int n;      //хранит дрину строки в байтах
    char *p;    //хранит адрес дин. выделенной памяти для размещения символов строки
public: 
    Mystring(){};   //конструктор без п-ов          
    Mystring(const char *s){ //конструктор, прин. п-р Си-строку
        n = strlen(s);
        p = new char[n+ 1];
            for (int i = 0; i < n; i++) p[i] = s[i];
            p[n] = '/0';};
    Mystring(char c){        //конструктор, прин. п-р символ
        p = new char[2];
        p[0] = c;
        p[1] = '\0';
        n = 1;};
    Mystring(const Mystring &str){  //конструктор копир.
        n = str.n;
        p = new char[n + 1];
        strcpy(p, str.p);};
    ~Mystring(){        //деструктор
        delete[] p;};


Вопрос в том, что нужно проверить (в конструкторе), чтобы кинуть исключение для того, чтобы его обработать в функции, ну допустим, пусть это будет main
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2014, 17:17     Генерация исключения в конструкторе
Посмотрите здесь:

C++ ощибка в конструкторе
Исключения в конструкторе C++
C++ Двоеточие в конструкторе
Шаблон в конструкторе C++
C++ О конструкторе копирования
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Керра
Модератор
 Аватар для Керра
1270 / 438 / 45
Регистрация: 24.08.2011
Сообщений: 2,123
04.05.2014, 18:24     Генерация исключения в конструкторе #2
Можно проверить нормально ли выделилась память, то есть не равен ли указатель NULL
Убежденный
Системный программист
 Аватар для Убежденный
14216 / 6231 / 988
Регистрация: 02.05.2013
Сообщений: 10,390
Завершенные тесты: 1
04.05.2014, 18:37     Генерация исключения в конструкторе #3
Цитата Сообщение от Cer9 Посмотреть сообщение
Вопрос в том, что нужно проверить (в конструкторе), чтобы кинуть исключение для того, чтобы его обработать в функции
В данном случае - ничего.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.05.2014, 18:54     Генерация исключения в конструкторе #4
strlen не любит, когда в нее нулевой указатель передают.
вот и проверяйте, что аргумент конструктора s отлично от нуля.
если не так - бросайте исключение.
Cer9
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 23
04.05.2014, 19:59  [ТС]     Генерация исключения в конструкторе #5
Спасибо вам, натолкнули на мысль Буду пробовать.

Добавлено через 36 минут
Еще вопрос, если например у меня, помимо базового класса, есть 2 производных (такие же методы), то как это будет выглядеть через дополнительную функцию?

Добавлено через 18 минут
Добавленный вопрос более не действителен Т.к. решение найдено.
Yandex
Объявления
04.05.2014, 19:59     Генерация исключения в конструкторе
Ответ Создать тему
Опции темы

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