Текущий архив: 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.45 MB
Время: 0.007 c