Tag Archives: recursos

I Love C# – Boas Práticas {Exception}

Implementação: Exception

Opss! Deu erro!

Boas práticas de uso geral do C#/Exceptions.

Nomenclatura

Nomeie nossas classe de exceção utilizando a definição PascalCase, e finalize com a expressão Exception, para dizer que o tipo é uma exceção.

ServiceProviderException

Not

Não use blocos try/catch para controle de fluxo.

Only

Use catch para exceções que podemos tratar.

Use finally para desalocar recursos alocados.

Never

Declare um bloco catch vazio.

Best

Prefira expressões condicionais a tratamento de exceção.

Evite criar novas classes de exceção, utilize as já existentes no .NET, como as implementações para tratar de arquivos, bases, rede, system DivisionByZeroException, etc).

Evite aninhar blocos try/catch dentro de um bloco catch.

Filtre exceções sempre que puder.

Ordene os filtros de exceções da mais derivadas para menos.

Evite retransmitir uma exceção. Deixe ela passar, ao invés.

Ao retransmitir, use somente throw omitindo a exceção.

Quando for criar uma nova implementação de exceção:

  • Herde de exception
  • Sobreescreva o ToString() e o operador string implícito para prover serialização.
  • Implemente o Exception Constructor Pattern(*)

(*)

public MyCustomException();
public MyCustomException(string message);
public MyCustomException(string message, Exception innerException);

Quando disparar uma ex customizada, passe o innerException para manter a exception tree e o call stack.

Visual Studio

Digite Try+2Tabs e tenha a estrutura da exception:

cs_exception

Ok! Um pouco sobre o Boas Práticas.