gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:14:58 27 4
gpt4 key购买 nike

在我维护的一些应用程序的许多地方,我发现在 for 循环中使用 try/finallytry/except block 的代码if 语句避免使用 begin/end

考虑下一个代码(不是生产代码,只是一个示例)

{$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 ,只是为了避免在存在情况下使用它(begin/end)当使用 try/finally 或 try/except 不需要开始/结束时。

最佳答案

我个人认为不需要添加额外的 begin..end围绕 try..finally/except..end ,尤其是在 try 之前几乎不可能添加代码的情况下或者肯定在 end 之后.

话虽如此,问题更多的是我们是否需要系统地 begin..end..do之后或 ..then即使只有一条指令(在您的情况下为 try.. 指令)。

这主要是风格和习惯的问题,有些人喜欢防御性地编写代码并系统地开始...结束,其他人则尽量避免不必要的行。

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

我想说的是,请运用良好的判断力,看看有人(或您)稍后修改代码的可能性有多大。

关于delphi - 使用 try/finally try/except 而不是 begin/end 是否被认为是不好的做法或存在任何缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9073719/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com