1

以下代码片段没有按我的预期工作,我认为这将显示我希望它显示的消息,而没有调试器异常通知“处理引发异常类 EAccessViolation 并带有消息‘模块 XXXX 中地址 0045D9E7 的访问冲突’”,但是程序与我的想法相反。为什么会这样?

procedure TForm1.btn1Click(Sender: TObject);
begin
    try
    (WebBrowser1.Document as IHTMLDOCUMENT2).execCommand('Refresh',false,0);
    except
      ShowMessage('caught!');
    end;
end;
4

1 回答 1

4

除非未选中调试器选项的“语言异常”中的“语言异常通知”,或者“EAccessViolation”是同一对话框中要忽略的异常类型之一,否则调试器会暂停程序并在出现语言异常时立即显示异常被提出。

请注意,根据文档,如果选中“通知语言异常”复选框,则调试器将忽略“要忽略的异常类型”中的列表。然而,这似乎不是每个 Delphi 版本的情况。通过我的测试,D2007 符合忽略列表(即使未选中该框)。使用 XE2,我无法以任何方式忽略 EAccessViolation。

于 2013-11-13T02:25:42.210 回答