Во многих местах в некоторых приложениях, которые я поддерживаю, я нашел код, который использует блок try/finally
или try/except
в предложении for loop
или if
, избегая использования начала / конца
Рассмотрим следующий код (не производственный код, а просто образец)
{$APPTYPE CONSOLE}
{$R *.res}
uses
Classes,
SysUtils;
Procedure TestNoBeginEnd;
var
i : Integer;
L1 : TStringList;
begin
for i := 1 to 10 do
try
L1:=TStringList.Create;
try
L1.Add('Bar');
L1.Add(IntToStr(i));
L1.Add('Foo');
finally
Writeln(L1.Text);
L1.Free;
end;
except
on E: Exception do
Writeln('Opps '+E.ClassName, ': ', E.Message);
end;
end;
begin
try
TestNoBeginEnd;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
Readln;
end.
Вопрос: считается ли плохой практикой, запахом кода или наличием каких-либо недостатков с использованием try / finally или try / except вместо begin / end в delphi?
ОБНОВЛЕНИЕ
Прошу прощения за глупый пример кода, просто для пояснения, что try / finally и try / except не претендуют на замену начала / конца, просто чтобы не использовать его (начало / конец), когда существует случай, когда использование of the try / finally или try / except не требует начала / конца.