Versions Compared

Key

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

Atualmente fala-se muito sobre tratamento de exceções no desenvolvimento de software em geral, independente da linguagem de programação. Estes tratamentos são extremamente úteis para controlar o fluxo de execução do aplicativo ou do script que está sendo ou foi desenvolvido e tratar quando algum erro ocorre, bem como servir como um bom recurso de rastreabilidade.

Porém, em muitos casos, os tratamentos de exceções não são elaborados e utilizados como supostamente deveriam ser.

Nesta documentação algumas premissas relacionadas à exceções no código e algumas dicas para empregar o tratamento.

1 - Escreva o esqueleto do bloco antes de codificar

Quando iniciar um bloco de tratamento de exceções, escreva toda a estrutura do tratamento antes de continuar a codificação. Essa dica é ainda mais importante para instruções finally, já que nos impede de esquecer de liberar um objeto da memória.

Por exemplo, caso seja necessário instanciar um objeto em um método, a estrutura pode ser escrita dessa forma:

Code Block
languagepas
uses
  Classes, System, SysUtils;

var  
  Objeto: TStringList;
  
begin  
  Objeto := TStringList.Create;  
  try   
    Objeto.Add('Documentação boas práticas de codificação');
  finally  
    Objeto.Free; 
  end;  
end;

Somente depois de escrever essa estrutura que a codificação dentro do try deve ser iniciada. Da mesma forma, se um objeto da classe estiver sendo instanciado no evento OnCreate de um formulário, o código para destruí-lo deve ser imediatamente escrito no evento OnDestroy. Se isso não for feito, haverá Memory Leaks na aplicação, comprometendo o desempenho e aumentando a probabilidade de erros consecutivos, também conhecidos como “efeito cascata”.

2 - Use o except exclusivamente para tratamento de exceções

É preciso entender que o except não deve ser empregado como uma condição If. Alguns desenvolvedores pensam da seguinte forma: “Vou tentar executar o plano A (try), e se não der certo, executo o plano B (except)". Isso não existe.

O tratamento de exceções, como o próprio nome diz, deve ser utilizado apenas para exceções, e não para regras de negócio. Como exemplo, considere o código:

Code Block
languagepas
try  
  ConsultarPorCodigo;
except  
  ConsultarPorDescricao;
end;

O bloco try/except está sendo incorretamente utilizado como uma condição para atender uma funcionalidade. Este código deve ser imediatamente corrigido com uma condição If dispensando assim o except de tratar regras de negócio:

Code Block
languagepas
var
  vTipoConsulta: String;
  
begin   
  try  
    if vTipoConsulta = 'Codigo' then    
      ConsultarPorCodigo  
    else if vTipoConsulta = 'Descricao' then
      ConsultarPorDescricao;
  except  
    ShowMessage('Erro ao realizar a consulta.');
  end;
end;

Abaixo outros exemplos de como utilizar isso no VsScripter de maneira correta e algumas dicas mais específicas para cada caso.

Page Tree
root@self
expandCollapseAlltrue
spacesDPU
startDepth1
searchBoxtrue