Stimmt, SvcMgr.Application (TServiceApplication) hat kein OnException,
aber SvcMgr läßt die
unit Forms.
Forms.Application hat ein OnException.
Aber jetzt fällt mir da wieder was ein.
Leider ist TServiceApplication so schrottig programmiert, daß man da nicht mehr an die Exceptionbehandlung rankommt, ohne die von TServiceApplication zu schrotten.
(es sei denn man möchte das Logging in den Windows-Event-Logs (
ReportEvent) umgehen)
Wenn du TService (SvcMgr) verwendest, dann füge mal Folgendes in deine Service-Anwendung (
DPR) ein.
Delphi-Quellcode:
uses SysUtils, Classes, SvcMgr, ...;
{$R *.RES}
type
TServiceApplicationHack =
class(TServiceApplication)
protected
procedure DoHandleException(E:
Exception);
override;
end;
procedure TServiceApplicationHack.DoHandleException(E:
Exception);
begin
// hier kannst du E.Message irgendwo hin loggen
inherited;
end;
begin
Application.Free;
Application := TServiceApplicationHack.Create(
nil);
...
Und ja, Application wird am ende nicht wieder freigegeben ... das macht die
Unit SvcMgr für uns.