Главная страница
    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.45 MB
Время: 0.005 c
14-50495
Axis_of_Evil
2003-05-30 14:06
2003.06.16
Indy, FastNet etc


4-50570
sosv
2003-04-16 10:30
2003.06.16
Установка своего курсора.


3-50212
pav_oleg
2003-05-26 01:40
2003.06.16
Как подменять значения некоторых полей результата запроса?


6-50417
tm
2003-04-14 07:06
2003.06.16
Как отослать информацию служебного рода с TClientSocket


3-50200
mishapost
2003-05-25 13:15
2003.06.16
Открытие запароленной БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский