Tratamento de Erros

Páginas: 5 (1063 palavras) Publicado: 27 de fevereiro de 2015
A politica de tratamento de erros é algo que deve ser definido logo no começo do desenvolvimento de uma aplicação. Definir onde os erros serão tratados, como serão tratados, onde serão logados, que exceções serão definidas, entre outros assuntos devem ser avaliados o quanto antes, preparando uma estrutura mínima de tratamento de erros. Uma boa opção é usar o Enterprise Library, que já possuio Exception Handling Application Block para ajudar na tarefa.
 O. Net já usa um nome para definir erros que não deixa margens à duplicidade: Exception, ou “exceção” no português. Exceção, segundo o dicionário Aulete Digital é:

1. Não correspondência a uma regra.
2. O que não confirma uma regra ou generalização.

Ou seja, exceções são coisas que acontecem e que não fazem parte de uma regra. Apalavra regra ajuda bem a entender o significado. Não é uma regra que seu código tenha bugs (eu espero), assim como não é uma regra que a conexão do banco de dados caia, e não é uma regra que o IIS seja reiniciado enquanto a aplicação está rodando. Todos esses casos são exceções. Quando essas exceções acontecem nosso código precisa saber lidar com elas.
Agora que já está claro o que é um erro,temos que entender quando lançar uma exceção. Devemos ter claro o seguinte: se algo que aconteceu no software não for uma exceção, mas uma regra, como uma regra de negócios, por exemplo, isso não deve ser tratado como um erro, com uma Exception sendo lançada. Assim, por exemplo, quando o usuário digitar um CPF inválido, em vez de lançar uma CPFInvalidoException, você devolve algum objeto que informeque o CPF é inválido. Afinal, digitar um CPF inválido é uma regra de negócio que deve ser tratada, não é um bug ou condição excepcional.
Exceções no .Net são objetos perigosos, eles podem derrubar a aplicação se não forem tratados, e além disso têm um custo altíssimo de performance. Sempre que for lançar uma exceção avalie se está fazendo isso para deixar claro que há um bug ou condiçãoinesperada.
Há uma regra muito clara para saber se você deve lançar uma exceção ou não: lance erros quando seu método não conseguir fazer o que tem que fazer. Se seu método deve abrir uma conexão e não conseguir, lance um erro. Se o seu método deve dar um desconto a um cliente, e o cliente não existir e portanto o desconto não puder ser dado, lance um erro. Mas não lance um erro se estiver buscando umcliente e ele não existir, afinal em buscas o objeto buscado pode realmente não ser encontrado, e isso é legal.
* Fim do update
E como tratar as exceções de verdade? Certamente não é assim:
static void Main(string[] args)
{
try
{
var minhaClasse = new MinhaClasse();
minhaClasse.FazAlgo();
}
catch (Exception)
{
throw;
}
}
Esse código temdiversos problemas:
1. Todo o código do método Main está envolto em um blog de Try Catch Finally (TCF). Será que instanciar a classe “MinhaClasse” pode gerar um erro? Talvez não, e então essa linha tinha que estar fora do TCF. Já vi empresas onde todos os métodos estão envoltos em TCF, como se tudo pudesse causar erro. Isso causa uma tremenda confusão no código, além de uma queda na performance.Problema: preguiça de checar onde podem acontecer exceções.
2. No catch a exceção sendo tratada é a System.Exception. Isso significa que qualquer exceção que aconteça vai ser tratada. Mas será que a classe “MinhaClasse”, que está dentro do try, não gera uma exceção mais específica? Se sim, então esta exceção deveria ser tratada. Problema: preguiça de checar quais exceções são lançadas pelo métodoFazAlgo, ou talvez o método seja tão complicado, tenha tantas dependências, e não tenha tratamento de erros, que isso não seja claro.
3. Se realmente for o caso de tratar qualquer exceção, então um simples “catch {}” resolveria, não precisava de um “catch (Exception) {}”.
4. A exceção não é efetivamente tratada, já que o código simplesmente lança a exceção de volta no throw.
Mas dá para ficar...
Ler documento completo

Por favor, assinar para o acesso.

Estes textos também podem ser interessantes

  • Tratamento de erros
  • Tratamento de erros
  • Medidas: determinação e tratamento de erros
  • Tratamento específico e propagação de erros
  • Erros e tratamento de dados experimentais
  • Erros e tratamentos de dados experimentais
  • Medidas: Determinação e Tratamento de Erros
  • Medidas: Determinação e Tratamento de Erros

Seja um membro do Trabalhos Feitos

CADASTRE-SE AGORA!