Pessoal abaixo coloquei uma forma simples de tratar erros em aplicações feitas em Delphi, aos poucos vou postando dicas aqui. Colocar no FORM Create Código: Application.OnException := ManipulaExcecoes; Criar a Procedure Código: procedure TForm1.ManipulaExcecoes(Sender: TObject; e: Exception); begin try if count = 0 then begin if (Pos('unavailable database' , lowercase(e.message)) > 0) or (Pos('connection lost' , lowercase(e.message)) > 0) or (Pos('invalid transaction handle', lowercase(e.message)) > 0) or (Pos('table unknown' , lowercase(e.message)) > 0) or (Pos('automacao/db' , lowercase(e.message)) > 0) or (Pos('foi forçado o cancelamento', lowercase(e.message)) > 0) or (Pos('internal gds software' , lowercase(e.message)) > 0) or (Pos('unable to complete network', lowercase(e.message)) > 0) then begin EnviaEmail(TimeToStr(Time) + ' = ' + e.Message + ' Banco Caiu !',1);//044.02 end else begin if (Pos('conversion error from string', lowercase(e.message)) > 0) then begin EnviaEmail(TimeToStr(Time) + ' = ' + e.Message + chr(10) + chr(13) + 'Será rodado um programa para tentar corrigir o erro',8);//255.01 end; EnviaEmail(TimeToStr(Time) + ' = ' + e.Message ,1);//044.02 end; end; except end; end;