默认情况下,中发生的任何未处理的异常
TForm.OnCreate
将导致显示错误消息,而不是引发异常。
原因是中的此代码
VCL.Forms
:
function TCustomForm.HandleCreateException: Boolean;
begin
Application.HandleException(Self);
Result := True;
end;
我的所有表单都继承自TMyForm。我计划覆盖此功能以解决问题:
function TMyForm.HandleCreateException: Boolean;
begin
Result := False;
end;
但我无法想象有人希望表单创建中的异常被吞噬,留下一个可能半初始化的表单,但这段代码仍然存在于VCL中。这给我留下了一个问题:
是否有理由不以这种方式处理表单创建中未处理的异常?或者有更好的选择来处理我的问题吗?
已编辑
以澄清最初的问题。我有以下代码:
try
//...
Frm := TBooForm.Create(...);
Frm.ShowModal;
//...
except
//exception in TBooForm.FormCreate not landing here.
end;
如果我不接触全局异常处理,则中的未处理异常
TBooForm.FormCreate()
不会降落在例外区块中。相反
Frm
将以半初始化状态显示,导致难以跟踪的错误。