URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3964
[ Назад ]

Исходное сообщение
"А можно throw из конструктора или "

Отправлено Lamr , 15-Фев-05 18:02 
деструктора? Выволивает прога дамп, почему не могу понять :-(

Содержание

Сообщения в этом обсуждении
"А можно throw из конструктора или "
Отправлено Xenu , 15-Фев-05 19:14 
>деструктора? Выволивает прога дамп, почему не могу понять :-(

из конструктора можно, а из деструктора не рекомендуется.


"А можно throw из конструктора или "
Отправлено DeadMustdie , 15-Фев-05 19:30 
>из конструктора можно, а из деструктора не рекомендуется.

даже запрещается


"А можно throw из конструктора или "
Отправлено Lamr , 15-Фев-05 20:46 

>даже запрещается

Видимо потому что созданная в классе переменная ИсключительногоКласса тут же исчезнет?

Или типа конструктор  никогда не завершит работу?

Что-то туман;

Спасибо за советы;


"А можно throw из конструктора или "
Отправлено DeadMustdie , 15-Фев-05 21:47 
Из конструктора можно. Семантика простая: происходит обычный
откат стека с вызовом всех необходимых деструкторов.

Из деструктора нельзя. Деструктор обязан выполнить свою работу
до конца. А невозможность выполнить очистку не есть исключительная
ситуация. Если при очистке возникли проблемы, то можно:
  - счесть это нормальной ситуацией и ошибку проигнорировать;
  - выдать диагностику;
  - известить пользователя об обнаруженном жуке.


"А можно throw из конструктора или "
Отправлено Lamr , 16-Фев-05 10:55 
>  - счесть это нормальной ситуацией и ошибку проигнорировать;
>  - выдать диагностику;
>  - известить пользователя об обнаруженном жуке.


Да я тут накидал класс для коннекта к ораклу. Деструктор должен выплнить дисконнект ( ologof ), которая способна возвратить ошибку. Вот я и хотел сгенерить исключение.
  Да и хрен с ним, в случае неудачи само отвалится рано или поздно.


"А можно throw из конструктора или "
Отправлено Vladislav Lazarenko , 16-Фев-05 11:32 
>>  - счесть это нормальной ситуацией и ошибку проигнорировать;
>>  - выдать диагностику;
>>  - известить пользователя об обнаруженном жуке.
>
>
> Да я тут накидал класс для коннекта к ораклу. Деструктор должен
>выплнить дисконнект ( ologof ), которая способна возвратить ошибку. Вот я
>и хотел сгенерить исключение.
>  Да и хрен с ним, в случае неудачи само отвалится
>рано или поздно.

в таком случае лучше написать метод типа "disconnect() throws ..."
а в деструкторе вызывать его, обрабатывая возможное исключение.

Если при выполнении программы ты захочешь четко убедиться в том, что ты отвалился от базы, просто вызови ручками этот метод перед тем, как объект класса будет уничтожен.


"А можно throw из конструктора или "
Отправлено Lamr , 16-Фев-05 11:47 

>в таком случае лучше написать метод типа "disconnect() throws ..."
>а в деструкторе вызывать его, обрабатывая возможное исключение.

Спасибо, спасибо большое за советы.
Попробую так.