Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

try..except


ldv ©   (2011-04-22 11:43:00) 


function TMainForm.init_data(Data: Pointer;
 Size: Cardinal): Bool;
begin
 Flinked_data := TMemoryStreamEx.Create(Data, Size);
 try
   FLinker := TLinker.Create;
   try
     Result := FLinker.SetStaticFromMemory(Flinked_data.Memory, Flinked_data.Size,
       False);
   except
     FreeAndNil(FLinker);
     raise;
   end;
 except
   FreeAndNil(Flinked_data);
   raise;
 end;

end;


есть подозрение, что неправильно использую try..except. Может правильнее сделать один общий try..except для Flinked_data и FLinker?


Игорь Шевченко   (2011-04-22 15:24:00) [1]


> есть подозрение


подозрение укрепилось


И. Павел   (2011-04-22 13:24:00) [2]

А я в таких ситуациях делаю так:

Flinked_data := nil;
FLinker := nil;
try
  Flinked_data := TMemoryStreamEx.Create(Data, Size);
  FLinker := TLinker.Create;
  ...
except
  FreeAndNil(Flinked_data);
  FreeAndNil(FLinker);
  raise;
end;


LDV   (2011-04-22 12:05:00) [3]


> Лучше сделай для них var...


объект FLinker напрямую привязан к стриму (пока стрим открыт можем работать с его содержимым через FLinker), FLinker будет использоваться несколькими методами класса-формы, поэтому сделать их локальными не получится.


_oxffff   (2011-04-22 11:56:00) [4]


> есть подозрение, что неправильно использую try..except.


Все зависит от постановки задачи.


oldman   (2011-04-22 11:52:00) [5]


> Может правильнее сделать один общий try..except для Flinked_data
> и FLinker?


Не...
Лучше сделай для них var...


Наверх

Титульная страница Поиск, карта сайта Написать письмо