Sang und Klanglos geht da nix unter.
Exceptions, welche in einem TThread-Ableger nicht abgefangen werden, werden gespeichert und können abgefragt werden.
PS: Wann wird eigentlich dein Thread-Objekt freigegeben?
FreeOnTerminate wird ja nicht gesetzt und selber freigeben tust du das
t anscheinend auch nicht,
was demnach natürlich in einem Speicherleck enden muß.
Nja, wie dem auch sei,
* entweder du schreibst folgenden Code in eine Ereignisprozedur (mit Sender statt t) und registrierst diese bei t.OnTerminate und stellst natürlich t.FreeOnTerminate noch auf True
* oder das Selbe, nur daß DoTerminate überschrieben wird, statt OnTerminate zu nutzen
* oder du gibst irgendwo im Hauptprogramm das
t frei, nachdem der Thread mit seiner Arbeit beendet hat, und führst ebenfalls vorher nachfolgenden Code aus.
Delphi-Quellcode:
if Assigned(t.FatalException)
then
ShowException(t.FatalException,
nil);
// oder
if Assigned(t.FatalException)
then
ShowMessage(
Exception(t.FatalException).
Message);