Die Behandlung von Ausnahmen in der Thread-Funktion
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
}
}