Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > использование try..except


Автор: NieL 22.4.2011, 11:14
Код

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?

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

Автор: MetalFan 22.4.2011, 11:25
NieL, в данном случае лучше использовать try..finally
Тогда все будет грамотно.
Можно конечно сократить (убрать один try..finally), если на 100% уверены, что TLinker.Create никогда не вызовет исключение.
Но, по скольку никогда ни в чем на 100% уверенным быть нельзя, то лучше оставить так, как есть (в смысле кол-ва try..finally)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)