Die Behandlung von Ausnahmen in der Thread-Funktion

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Die Thread-Funktion schreiben

Die Methode Execute muss alle Exceptions abfangen, die in einem Thread auftreten. Wird eine Exception in einer Thread-Funktion nicht abgefangen, kann Ihre Anwendung Zugriffsverletzungen verursachen. Dies ist bei der Entwicklung einer Anwendung nicht sofort ersichtlich, da hierbei die IDE die Exception abfängt. Wird die Anwendung jedoch außerhalb der Debugger-Umgebung ausgeführt, erzeugt diese Exception einen Laufzeitfehler, und die Anwendung kann nicht weiter ausgeführt werden.

Um die Exceptions abzufangen, die in der Thread-Funktion auftreten, fügen Sie einen try...except-Block der Implementierung der Methode Execute hinzu:

procedure TMyThread.Execute;
begin
  try
    while not Terminated do
  PerformSomeTask;
  except
    { Exceptions irgendwie behandeln }
  end;
end;
void __fastcall TMyThread::Execute() {
	try {
		while (!Terminated)
			PerformSomeTask();
	}
	catch (...) {
		// Festlegen, was mit Exceptions geschieht
	}
}

Siehe auch