Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

Postado

Em ambiente de testes/homologação (não testei em produção) ao finalizar o recebimento no TEF PayGo o Delphi reporta 4 vezes a exceção:

EConvertError

'' is not a valid integer value

Essa exceção ocorre na unit ACBrBase, classe TACBrInformacao, método GetAsDate, ao executar StrToInt:

function TACBrInformacao.GetAsDate : TDateTime;
var
   DataStr, AnoStr: String;
begin
  DataStr := OnlyNumber( Trim(fInfo) );

  if (Length(DataStr) = 6) then // DDMMYY, converte para DDMMYYYY
  begin
    AnoStr := IntToStr(YearOf(Today));
    DataStr := copy(DataStr,1,4) + copy(AnoStr,1,2) + copy(DataStr,5,2);
  end;

  try
    Result := EncodeDate( StrToInt(copy(DataStr,5,4)), // EXCEÇÃO AQUI !!!
                          StrToInt(copy(DataStr,3,2)),
                          StrToInt(copy(DataStr,1,2)) ) ;
  except
    Result := 0 ;
  end;
end;

A exceção é tratada no bloco try..except então ela não propaga para quem chamou.

Mas o fato de ela acontecer pelo menos 4 vezes em uma operação que foi bem sucedida é um pouco chato.

Uma solução simples seria:

function TACBrInformacao.GetAsDate : TDateTime;
var
   DataStr, AnoStr: String;
begin
  DataStr := OnlyNumber( Trim(fInfo) );
  
  // ********* SUGESTÃO *********
  Result := 0;
  if Trim(DataStr) = '' then exit;
  // ********* SUGESTÃO *********

  if (Length(DataStr) = 6) then // DDMMYY, converte para DDMMYYYY
  begin
    AnoStr := IntToStr(YearOf(Today));
    DataStr := copy(DataStr,1,4) + copy(AnoStr,1,2) + copy(DataStr,5,2);
  end;

  try
    Result := EncodeDate( StrToInt(copy(DataStr,5,4)),
                          StrToInt(copy(DataStr,3,2)),
                          StrToInt(copy(DataStr,1,2)) ) ;
  except
    Result := 0 ;
  end;
end;

 

 
 
 
 
  • Fundadores
Postado

O código já é tratado por Try/Except

try
    Result := EncodeDate( StrToInt(copy(DataStr,5,4)), // EXCEÇÃO AQUI !!!
                          StrToInt(copy(DataStr,3,2)),
                          StrToInt(copy(DataStr,1,2)) ) ;
  except
    Result := 0 ;  // <------ AQUI --------
  end;
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado (editado)

@Daniel Simoes se fosse uma exceção mais específica (algo como ACBrExceptionAlgumaCoisa), até concordaria com você.

Mas a exceção em questão é EConvertError, uma exceção genérica e que pode ser levantada em outros lugares no código.

Ignorar essa exceção poderia mascarar problemas em outros pontos do código.

Editado por Clayton Alves
grafia errada
 
 
 
 

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.