sábado, 2 de fevereiro de 2013

C# - Utilizando o Try Catch

Esse post eu dedico para aqueles que acham que try catch pode ser utilizado para qualquer fim e a qualquer hora.
Acredito que todos conhecem como devemos utilizar o famoso try catch, então vou dar apenas uma breve explicação.
Existem partes do nosso código que não conseguimos gerenciar, como por exemplo, quando utilizamos dlls externas ou quando consumimos um WebService, nesses casos, internamente, na chamada do método, podem ocorrer erros que não gostaríamos que fossem exibidos ao usuário do nosso sistema, então adicionamos um bloco de tratamento de exceção onde o try engloba o bloco de código não gerenciavel e o catch contém o tratamento da exceção e por  fim podemos adicionar um finally que será executado em caso de exceção ou não.
Exemplo bloco try catch
Ou seja, o bloco try catch só deve ser adicionado quando não conseguimos encontrar uma forma de descobrir se um bloco irá dar erro ou não.

Estou enfatizando o correto uso do try catch, pois muitos programadores(inclusive eu em meus primeiros meses de programação) não sabem o quanto ele não é performático, e optam por utilizar o bloco try catch em momentos em que conseguimos evitar uma exception, por exemplo:

- Temos um cadastro de usuário que deve ser validado antes de ser gravado no banco de dados.
Usuario{Id, Nome,Idade,...}
 Criamos 2 métodos, o primeiro validando se o nome do usuário foi informado e se tem até 100 caracteres utilizando try catch:
Utilizando o try catch
e outro validando da forma correta, verificando antes se o Nome não é nulo, pois isso não nos permitiria ver se o tamanho do nome tem mais de 100 caracteres:
Não utilizando o try catch Simulamos a execução de tais métodos 10 e 1000 vezes, informando um usuário com nome = null para ver quanto tempo demorou cada uma das execuções e obtivemos o seguinte resultado:
Como podemos verificar, utilizando o try catch, o tempo de execução foi muito maior, portanto, quando forem utilizar um bloco try catch, parem e pensem se realmente ele é necessário no código.
Com esse post não estou dizendo que o try catch não deve ser utilizado, apenas quero que pensem quando realmente é necessário utiliza-lo.

Abaixo estou disponibilizando as classes utilizadas. O código fonte do projeto pode ser encontrado no link(source) ou através do github em:
https://github.com/fsaalmeidinha/trycatch.git

Usuario.cs

Analisador.cs

Main.cs

Nenhum comentário:

Postar um comentário