如何替换空的 except 块?

par*_*ise 2 delphi exception try-except

浏览一些遗留代码,我遇到一些“空”的 except 块。它们都是出于类似的原因而实现的,即处理从 TEdit 中的文本到数值的转换。由于 TEdit 可能为空,因此在这种情况下不应出现错误消息:

procedure TmyForm.EditExit(Sender: TObject);
begin
  ...  
  try
    _value := StrToFloat(Edit.Text);
  except
  end; 
  ...
end;
Run Code Online (Sandbox Code Playgroud)

这很有效,但我想这并不是一个好的做法。有没有更好的方法来获得相同的行为?

Dav*_*nan 5

你应该使用TryStrToFloat

if TryStrToFloat(Edit1.Text, _value) then
  // do something with _value
Run Code Online (Sandbox Code Playgroud)

这是一个返回布尔值的函数,表示转换成功。成功后,转换后的值将在输出参数中返回。

  • `StrToFloatDef` 在这种情况下也可能起作用,具体取决于这个 _something_ 实际上是什么。 (3认同)
  • @paradise:我检查过,“TryStrToFloat()”确实存在于 D2007 中的“SysUtils”单元中。它有 **6 个重载**,实际上 - 3 个重载用于处理“Extended”、“Double”和“Single”输出,还有 3 个重载用于支持“TFormatSettings”输入。 (2认同)