AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exceptions in Threads abfangen

Ein Thema von C.Schoch · begonnen am 7. Mai 2007 · letzter Beitrag vom 8. Mai 2007
Antwort Antwort
C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#1

Exceptions in Threads abfangen

  Alt 7. Mai 2007, 22:15
Hi,
Wenn bei Delphi in einem Thread eine Exception auftritt beendet sich dieser ohne eine Meldung oder ähnliches.
Daher suche ich nach einer Möglichkeit um Exceptions in Threads abzufangen und das auftreten einer solchen zumindest in ein Log zu schreiben.

Schon mal Danke für eure Antworten
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Exceptions in Threads abfangen

  Alt 8. Mai 2007, 00:57
Du kannst im Ereignis "OnTerminate" des Threads dessen Eigenschaft "FatalException" prüfen. Die wird nämlich beim Auftreten einer Exception auf eben diese gesetzt.

Beispiel:
Delphi-Quellcode:
procedure TForm1.OnThreadTerminate(Sender: TObject);
begin
  if TThread(Sender).FatalException is Exception then
    LogException(Exception(TThread(Sender).FatalException));
end;
Solltest du das Ereignis "OnTerminate" anderweitig brauchen, dann kannst du eine eigene Thread-Basisklasse von TThread ableiten, in der du die virtuelle Funktion "DoTerminate" durch deine eigene ersetzt und von der du dann wiederum alle deine Thread-Klassen ableitest.

Beispiel:
Delphi-Quellcode:
type
  TThreadBase = class(TThread)
  protected
    procedure DoTerminate; override;
  end;

procedure TThreadBase.DoTerminate;
begin
  if FatalException is Exception then
    // Achtung: wir sind noch im Thread-Kontext. Ggf. selbst ein Synchronize machen!
    LogException(Exception(FatalException));

  // Hier wird OnTerminate aufgerufen
  inherited;
end;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Exceptions in Threads abfangen

  Alt 8. Mai 2007, 15:07
Hi,

Dankeschön Flocke, so funktioniert es wunderbar
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz