Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

A estrutura do TRY é realmente muito útil na codificação dos códigos do VsScripter, mas sempre deve-se tomar cuidado com as implementações.

Outra boa prática usando o TRY é sempre manter as criações de objetos fora da estrutura, veja o exemplo abaixo de como não fazer e o porque disto:

Code Block
languagepas
uses
  Classes; // unit que tem a definição da classe TStringList

var
  str : TStringList; //declaração da variável
begin
  //Forma de codificação correta
  //str := TStringList.Create; // criação do objeto 
  try
    //Criando o objeto dentro da estrura TRY. Forma de codificação errada
    str := TStringList.Create; // criação do objeto 
    str.add('Testando'); //utilização do objeto
    str.add(' ciclo de vida');
    str.add(' de objetos no script.');    
    ShowMessage(str.Text);
  finally
    str.free; //destruição/eliminação do objeto
  end;
end;

Supondo que ocorra algum erro na criação deste objeto (linha 9), e isso pode acontecer por diversos motivos, o sistema irá gerar um erro para o usuário na tela. Então, após o usuário clicar em OK nesta mensagem de erro o sistema irá gerar outro erro, mas é devido à linha 15, que é a limpeza da memória que está dentro da cláusula FINALLY, e isso irá ocorrer porque o objeto STR não existe, então automaticamente não conseguirá realizar a limpeza/liberação da memória, e um erro de ACCESS VIOLATION aparecerá para o usuário final.