在我维护的一些应用程序的许多地方,我发现在一个或句子中使用一个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.
问题,在delphi中使用try/finally或try/except代替begin/end是否被认为是一种不好的做法、代码气味或存在任何缺点?
更新
对于愚蠢的示例代码,我很抱歉,只是为了澄清 try/finally 和 try/except 不会假装替换 begin/end ,只是为了避免在使用时使用它(开始/结束) try/finally 或 try/except 不需要开始/结束。