Exceptions, die in einem
COM-Server entstehen werden automatisch von der
VCL in eine Delphi-
Exception umgewandelt (dabei sind die Interfaces IErrorInfo und ISupportErrorInfo im Spiel)
Wenn die
Exception nicht durch einen
Exception-Handler (try..except Block) abgefangen wird,
steigt sie wie eine Luftblase durch den Honig nach oben.
Application.OnException ist die letzte Gelegenheit die
Exception doch noch zu packen und z.B. in eine Logdatei zu schreiben.
Falls Application.OnException nicht zugewiesen ist, wird die
Exception über Application.ShowException(E) angezeigt.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := AppException;
end;
procedure TForm1.AppException(Sender: TObject; E:
Exception);
begin
if E
is EOleSysError
then // OLE-Exceptions
Caption := E.
Message // nur als Caption anzeigen um störende Meldungen zu vermeiden
else
Application.ShowException(E);
// alle anderen Exception wie gehabt anzeigen
end;