У меня есть служба, написанная на Delphi 2007, в которой я пытаюсь перехватить любые неизвестные исключения. Присвоение метода исключению on, похоже, не работает («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' никогда не вызывается, и приложение продолжает работать (я предполагаю, что оно ждет, пока кто-нибудь нажмет ok в диалоговом окне невидимой ошибки, которое оно создало). Любые идеи, почему код под «кроме» не вызывается? Заранее спасибо! КП