Thread anônima no Delphi, com envio de exceção para thread principal

Atualizado em: 12/06/2023

Adicione o componente TApplicationEvents, e coloque-o para gerenciar as exceções da aplicação através do evento OnException.

Exemplo de código:

procedure TForm1.Button1Click(Sender: TObject);
var
  Thread: TThread;
begin
  Thread.CreateAnonymousThread(
    procedure
    begin
      try
        TThread.Synchronize(nil,
            procedure
            begin
              Form1.Caption := 'XPTO';
            end);
        raise Exception.Create('Error Message');
      except
        on E: Exception do
        begin
          TThread.Synchronize(nil,
            procedure
            begin
              ApplicationEvents1Exception(TObject(TThread), E);
            end);
        end;
      end;
    end).Start;
end;

Categorias