【发布时间】:2013-12-06 11:50:46
【问题描述】:
回复:How to correctly write Try..Finally..Except statements?
我仍然对 OP 的原始问题感到困惑。具体来说,读取“Screen.Cursor:=crDefault”的过程的最后一行(try..finally..end 之外)。
我的理解是 try..except|finally..end 块中引发的任何异常将在“try”的“end”之后执行代码。
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;
在上面的例子中,我看不出“Screen.Cursor:=crDefault”不会被执行的任何原因。如果我错了,请纠正我。
作为另一个示例,我编译了这段代码来帮助说明。运行代码时,将显示三 (3) 个 ShowMessage() 对话框。第一个“Exception Raised”,第二个“finally”,第三个“at end”。
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;
所以,我很困惑为什么他的“Screen.Cursor:=crDefault”没有以原始形式和代码运行。有人可以详细说明吗?
【问题讨论】:
标签: delphi try-finally try-except