17 de jan. de 2012

[Parte 12] Capítulo 2: Tratamento de erros


Blocos try-catch

É comum termos em nossos projetos blocos de código que podem falhar por razões que estão fora de nosso controle, como por exemplo:

- Se o código tenta abrir, criar, ler ou escrever um arquivo, todos tipos de erros podem ocorrer. O arquivo pode não existir, pode estar bloqueado, o código pode não possuir as permissões necessárias, etc.
- Se o código tenta atualizar registros em um banco de dados, pode haver problemas de permissões, a conexão com o banco de dados pode ser perdida, os dados a serem salvos podem ser invãlidos, etc.

Na programação, esse tipo de situação é chamado de exceção. Se o código encontra uma exceção, ele gera (lança) uma mensagem de erro que, na melhor das hipóteses, é irritante ao usuário.

Em situações onde podem haver exceções, para evitar mensagens de erro desse tipo, pode-se utilizar try/catch. Na instrução try, é executado o bloco de código para verificar se ocorre a exceção. Em instruções catch, é verificado se erros específicos ocorreram. Cada bloco try pode possuir vários blocos catch. A quantidade de blocos catch será proporcional à quantidade de erros que estamos tentando evitar que ocorram.

O exemplo a seguir mostra uma página que cria um arquivo de texto na primeira solicitação e, em seguida, exibe um botão que permite ao usuário abrir o arquivo. O exemplo utiliza de propósito um diretório errado para o aquivo, com o intuito de gerar uma exceção.

O código inclui catch para duas possíveis exceções: FileNotFoundException, que ocorre se o nome do arquivo for ruim, e DirectoryNotFoundException, que ocorre se o ASP.NET não pode encontrar a pasta onde o arquivo está. (Você pode descomentar uma declaração no exemplo, para ver como é executado quando tudo funciona perfeitamente.)

Se o código não trata a excessão, você veria uma página de erro, como a captura de tela anterior. No entanto, a seção de try/catch ajuda a prevenir o usuário de ver esses tipos de erros.

Nenhum comentário:

Postar um comentário

Sua crítica, sugestão ou comentário será muito bem vindo!