我有一个使用Delphi 2007编写的服务,我正在尝试捕获任何未知异常。将方法分配给on exception似乎不起作用('Forms.Application.OnException:=UnknownApplicationException')。 'UnknownApplicationException'似乎没有被调用 - 我认为这是因为应用程序中没有窗体,所以该方法实际上从未被分配。除此之外,我还尝试在计时器上创建异常(在注释掉'Forms.Application.OnException:=UnknownApplicationException'以免干扰之后)。定时器在服务启动后60秒触发:
procedure TProcessScheduler.Timer1Timer(Sender: TObject);
begin
try
Raise Exception.Create('THIS GIG SUCKS');
except
LogEvent(Name,rsUNKNOWN_EXCEPTION,EVENTLOG_AUDIT_FAILURE,0);
ExitCode:=-1;
Halt;
end;
end;
这个异常似乎从未被捕获 - 服务启动后60秒触发计时器,我听到Windows错误提示音但没有看到任何错误对话框 - 可能是因为该应用程序是一个服务?'Halt'从未被调用,应用程序继续运行(我认为它正在等待某人在创建的隐形错误对话框上单击'确定')。有什么想法为什么"except"下面的代码不会被调用吗?谢谢!KP
except
捕获并处理了异常,因此它永远不会触发Application.OnException
事件。除了Halt
,ExitCode := -1
也被跳过了吗?如果是这样,那么问题就在于LogEvent
中,您应该发布一些代码来展示LogEvent
的操作。 - Jeroen Wiert Pluimers