Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.16;
Скачать: CL | DM;

Вниз

Почему создавать объект надо перед try?   Найти похожие ветки 

 
малой   (2003-06-04 17:47) [0]

Мастера, подскажите, почему так? Почему нельзя в теле try ... finally end; ?


 
Palladin ©   (2003-06-04 17:50) [1]

кто тебе сказал что нельзя, создавай на здоровье...


 
Skier ©   (2003-06-04 17:52) [2]

>малой (04.06.03 17:47)
Потому что try-блок "защищает" выделенную память, а вызов
конструктора "защищать" не надо, потому что если в конструкторе
возникает исключение, то вызывается деструктор.


 
Palladin ©   (2003-06-04 17:52) [3]

просто концепция такая что:
до try -выделяем ресурсы
в finally - их освобождаем в любом случае...

какой смысл освобождать ресурсы в finally которые берутся в теле try, ведь они могут и не взятся, ибо исключение может произойти раньше...


 
малой   (2003-06-04 17:53) [4]

Мне сказали что правильно будет так:

...
var MyObj: TMyClass;
begin
MyObj := TMyClass.Create(nil);
try
//MyObj := TMyClass.Create(nil); так не правильно
...
finally
MyObj.Free;
end;
end;


 
малой   (2003-06-04 17:58) [5]

Palladin © и Skier © - понял спасибо.


 
Song ©   (2003-06-04 18:00) [6]

Косяк в том, что если по тем или иным причинам MyObj не создатся, он будет уничтожаться в finally. А так как его не существует, то возникнет AV. Вот из-за этого и не правильно.



Страницы: 1 вся ветка

Текущий архив: 2003.06.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
14-50435
pasha676
2003-05-29 09:05
2003.06.16
Кто то тут обещал плуг под Макс


1-50377
shuba
2003-06-03 10:37
2003.06.16
Word


14-50483
Term
2003-05-28 11:42
2003.06.16
Где можно найти RxLIB для 7-й делфи, поделитесь ссылочкой :)))


6-50424
Александр из Минска
2003-04-10 20:51
2003.06.16
Как установить обмен данными через МОДЕМ?


14-50499
Мыш
2003-05-30 06:13
2003.06.16
Куда мы катимся?