相关疑难解决方法(0)

进一步澄清:如何正确编写Try..Finally..Except语句?

RE:如何正确编写Try..Finally..Except语句?

我仍然对OP的原始问题感到困惑.具体来说,该过程的最后一行(在try..finally..end之外)读取"Screen.Cursor:= crDefault".

我的理解是,一个try..except内提出的任何异常| finally..end块WILL的的"尝试","结束"后执行代码.

procedure TForm1.Button1Click(Sender: TObject);
var
  Obj: TSomeObject;
begin
  Screen.Cursor := crHourGlass;

  Obj := TSomeObject.Create;
  try
    // do something
  finally
    Obj.Free;
  end;
  Screen.Cursor := crDefault;
end;
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我没有看到为什么"Screen.Cursor:= crDefault"不会被执行的任何原因.如果我错了,请纠正我.

作为另一个例子,我编译了这一小段代码来帮助说明.运行代码时,将显示三(3)个ShowMessage()对话框.第一个"Exception Raised"和第二个"finally"和第三个"结束".

procedure TForm1.Button1Click(Sender: TObject);
begin
   try
      try
         showMessage(format('%s', [12]));
      except
         showMessage('Exception raised');
      end;
   finally
      showMessage('finally');
   end;
   showMessage('at end');
end;
Run Code Online (Sandbox Code Playgroud)

所以,我很困惑为什么他的"Screen.Cursor:= crDefault"没有被运行,原因是它的原始形式和代码.有人可以详细说明吗?

delphi try-finally try-except

1
推荐指数
1
解决办法
1031
查看次数

标签 统计

delphi ×1

try-except ×1

try-finally ×1