Delphi 2007 - 错误处理,未命中“除外”部分

问题描述

我写了一个原始简单的代码,我试图调试我的项目中出现的情况。我在创建新窗口时试图进入异常,但我没有到达那里,这是为什么?告诉我出了什么事?或阅读什么来理解。

所以我进入了“除外”部分!

procedure TForm1.Button1Click(Sender: TObject);
var
  Local: TForm2;
begin
  try
    //Local := TForm2.Create(nil);
    //Local.Show;

    raise Exception.Create('not implement');
  except
    on E: Exception do
    begin

    end;
  end;
end;

我需要处理这种情况。我不会像那样进入“除外”部分

模块 Form1.pas

procedure TForm1.Button1Click(Sender: TObject);
var
  Local: TForm2;
begin
  try
    Local := TForm2.Create(nil);
    Local.Show;
  except
    on E: Exception do
    begin

    end;
  end;
end;

模块 Form2.pas

procedure TForm2.FormCreate(Sender: TObject);
begin
  raise Exception.Create('not implement');
end;

解决方法

您将看到从 DoCreate 调用的 TCustomForm.Create 在 try 中有 OnCreate 并且它的异常将异常传递给 TApplication.HandleException,后者将它传递给 {{1 }} 如果分配了一个。

如果认为如果您覆盖表单的 TApplication.OnException,您可以返回 HandleCreateException 的结果,这将允许异常通过