Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
ВнизOnCreate Найти похожие ветки
← →
alex_*** (2004-02-11 15:41) [40]to [39]
проверять создался ли объект.
если честно, то нет. если валится конструктор, то вылетает исключение и ,как правило, я ему позволяю обработаться по умолчанию, поскольку "выпадение" конструктора я считаю ситуацией, когда дальнейшее продолжение действия не имеет смысла. Бывают исключения, конечно, но основная схема у меня такова.
p.s. а ты предлагаешь что-то типа того?
obj := TSomeObj.Create();
Assert(obj<>nil,".....");
???
← →
KSergey (2004-02-11 15:52) [41]> [40] alex_*** © (11.02.04 15:41)
> to [39]
> p.s. а ты предлагаешь что-то типа того?
>
> obj := TSomeObj.Create();
> Assert(obj<>nil,".....");
Не пойму о чем это.
Я считаю так: если конструктор выполнился без исключений - то очевидно, что объект создался, и в приведенной строке Assert(obj<>nil,".....") смысла просто нет.
Если внутри конструктора вылетело исключение - то на следующую строку просто не попадаем - т.е. смысла в ней опять нет.
Так зачем же в приведенном коде написана вторая строка??
← →
Тимохов (2004-02-11 15:54) [42]
> obj := TSomeObj.Create();
> Assert(obj<>nil,".....");
И вы думаете, что assert когда нить может выдать сообщение?
← →
Sandman25 (2004-02-11 15:57) [43][39] KSergey © (11.02.04 15:24)
with Txxx.Create do
...
На выполнении Create происходит Exception. Чтобы его перехватить, нужно заключить Txxx.Create в try часть try-except. fianlly тут вообще не причем.
← →
alex_*** (2004-02-11 16:20) [44]to KSergey ©
Да и придется исключение обрабатывать или проверять создался ли объект.
Вы это не проверяете??? Вот за это точно можно бабки снимать, если уж на то пошло!
я вот насчет проверки и подивился. Зачем это проверять объект сразу после создания.
И вы думаете, что assert когда нить может выдать сообщение?
а зачем мне от него нужно сообщение? пусть сгенерит исключение и пустит дальше по цепочке.
← →
KSergey (2004-02-12 08:06) [45]> Sandman25 © (11.02.04 15:57) [43]
> [39] KSergey © (11.02.04 15:24)
>
> with Txxx.Create do
> ...
>
> На выполнении Create происходит Exception. Чтобы его перехватить,
> нужно заключить Txxx.Create в try часть try-except. fianlly
> тут вообще не причем.
Ничего не надо перехватывать.
Видимо, вы не в курсе, что дельфи сама неявно все вызовы конструкторов объектов заключает в try/except, при этом если в конструкторе происходит исключение - то автоматически (без какого-либо моего кода!) произойдет вызов деструктора. (Большое спасибо местным мастерам за эти мои знания.)
А потому я пишу именно
with Txxx.Create do
try
...
finally
Free;
end;
т.к. если в конструкторе произойдет исключение - то дестпуктор вызовется и так. А вот если уж объект успешно создался - то меня интересует лишь гарантированный вызов деструктора (через Free), а не проблема гашения возникших исключений.
← →
Runner (2004-02-12 09:15) [46]Вот еще одно подтверждение того, что люди в этом форуме, если и соизволят ответить, то не для того чтобы помочь, а для того чтобы выпендриться. Чо вы грызетесь-то? Чел уже давно сказал "спасибо" и срулил. Эх вы... "мастера"...
← →
Anatoly Podgoretsky (2004-02-12 09:38) [47]В данной ситуации типовой и удачной конструкцией является такая
with TformX.Create do
try
...
if Check then ShowModal;
...
finally
Free;
end;
← →
Юрий Федоров (2004-02-12 10:26) [48]>>Runner (12.02.04 09:15) [46]
А вы что-то говорите только для того, чтобы выпендриться или погрызться ? Не допускаете мысли, что это была обычная дискуссия с целью выяснить истину? Причем совершенно без "грызни" ?
← →
KSergey (2004-02-12 10:42) [49]> [46] Runner (12.02.04 09:15)
За внешнюю резковатость формулировки "Видимо, вы не в курсе" - прошу прощения.
Однако, на мой взгляд, если автор и сказал "я доволен", тема, возможно, кому-то еще покажется так же интересной - а потому отвечать шире поставленного вопроса - ничего в том странного нет. Как мне кажется.
← →
Sandman25 (2004-02-12 10:44) [50][45] KSergey © (12.02.04 08:06)
см. [25]
← →
Sandman25 (2004-02-12 10:47) [51]Точнее, [26].
← →
KSergey (2004-02-12 11:22) [52]> [51] Sandman25 © (12.02.04 10:47)
> см. [25]
> Точнее, [26].
Перечитал 25, 26, 45.
Связи не понял. Нельзя ли пространнее изъясняться, если это еще актуально, конечно? ;)
← →
Sandman25 (2004-02-12 11:36) [53][52] KSergey © (12.02.04 11:22)
Я бы предпочел сдаться, если Вы не против :)
Всему свое время и место. Это я о приемах программирования.
← →
KSergey (2004-02-12 12:28) [54]Предлагаю просто считать, что консенсус достигнут ;)
← →
Sandman25 (2004-02-12 12:33) [55]:)
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.03 c