Zu einem bestimmten Zeitpunkt kann es nur eine aktive
Exception geben. (siehe function ExceptObject)
Diese
Exception wird automatisch von der
VCL (bzw. Compiler-Magic) freigegeben.
Man könnte sich nun eine Objekt-Liste (TObjectList) vorstellen, in der man Kopien der
Exception-Objekte sammelt, bis man Zeit hat, alle gemeinsam dem Benutzer zu präsentieren.
Das Problem ist aber, dass sich Exceptions nicht so einfach kopieren lassen. (sie haben keinen virtuellen Konstruktor und auch keine Assign-Methode)
Eine andere Möglichkeit wäre, der
VCL vorzutäuschen, dass das
Exception-Object schon freigegeben wurde.
Delphi-Quellcode:
var
FExceptionList : TExceptionList;
// siehe Anhang, da wird der Trick gelüftet
...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
try
// Exception provozieren
raise EBitsError.Create('
Fehler im Timer '+TimeToStr(Time));
except
FExceptionList.AddException;
end;
end;