使用try/finally try/except而不是begin/end被认为是一种不好的做法或存在任何缺点?

Sal*_*dor 2 delphi try-finally try-except

在一些应用程序,我维护的地方很多,我发现它使用一个代码try/finallytry/except块一个for loopif句子避免使用开始/结束

考虑下一个代码(不是生产代码,只是一个样本)

{$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.
Run Code Online (Sandbox Code Playgroud)

问题,被认为是一种不好的做法,代码嗅觉或使用try/finally或try/except而不是delphi中的begin/end存在任何缺点?

UPDATE

对于愚蠢的示例代码我很抱歉,只是为了澄清try/finally并尝试/除了不假装替换开始/结束,只是为了避免使用它(开始/结束)当存在使用时的情况try/finally或try/except不需要开始/结束.

Fra*_*ois 6

我个人认为没有必要begin..end在a附近添加额外的内容try..finally/except..end,特别是当代码在之前try或之后添加代码的可能性很小时end.

话虽这么说,问题会比较我们是否需要一个系统begin..end后,..do..then只有一条指令(在你的情况下,即使try..指令).

这主要是风格和习惯的问题,有些人更喜欢防御性地编码并系统地设置一个开头......其他人尽量避免不必要的线路.

当涉及到相当多的行时,我倾向于添加begin..end以使范围更明显.

我会说,使用良好的判断力,看看有人(或你)稍后修改代码可能会错过预期范围的可能性.

  • +1"当涉及到相当数量的行时"段落和随后的段落.清晰度和可维护性始终优于行数.:) (3认同)