Exceções – Item 64

bombanuclear_hypesciencepontocomBusque atomicidade das falhas

Após um objeto lançar uma exceção, é desejável que ele continue em um estado bem definido e usável. Resumidamente, uma chamada de método incorreta deve deixar um objeto no estado que ele estava antes da chamada. Existem algumas abordagens para obter esse efeito:

  • Usar objetos imutáveis (Item 15) – se uma operação falhar, um novo objeto imutável não será criado e consequentemente não deixara o antigo em um estado inconsistente.
  • No uso de objetos mutáveis – verifique e valide todos os parâmetros antes de execução da operação (Item 38), fazendo a exceção ser lançada antes de qualquer alteração interna.
  • Código de recuperação – criar um código que armazene e reverta seu estado ao ponto anterior de inicio da operação.
  • Cópia temporária – criação de cópia temporária do objeto a ser processado e a substituição do conteúdo do objeto pela cópia, uma vez que a operação tiver sido concluída com sucesso.

A busca dessa atomicidade nem sempre é desejável, uma vez que para alcançar essa característica você pode aumentar significativamente o custo, complexidade de sua solução e até ocasionar perda de performance na solução.

Como regra sempre busque usar a atomicidade. Onde esse regra não for aplicável, a documentação da API (Item 44) deve indicar claramente em que estado o objeto poderá ser deixado.

Para todas as informações, veja o post inicial.

“Tornai-vos, pois, praticantes da palavra e não somente ouvintes, enganando-vos a vós mesmos.” Tiago 1:22