DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da .net Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Artigo .net magazine 70 - Tratamento de exceções

Este artigo mostra como manipular exceções em aplicações .NET (aplicações Windows Forms e Web). No decorrer do artigo serão apresentadas as técnicas para tratamento de exceções em nossas aplicações e também as técnicas para lançar exceções (para validar uma regra de negócios por exemplo). Veremos também cromo criar nossas próprias exceções derivando de System.Exception.






Tratamento de exceções

Aprenda a manipular exceções em suas aplicações ASP.NET e Windows Forms

 

Neste artigo veremos como manipular (lançar e tratar) exceções em nossas aplicações .NET de maneira profissional. Como exemplo veremos o tratamento de exceções em dois tipos de aplicações, Desktop e Web. Serão mostradas através de exemplos práticos as técnicas necessárias inclusive para lançar uma exceção durante o ciclo de execução da aplicação (para validar uma regra de negócios, por exemplo).

O tratamento de exceções é um assunto extremamente importante em qualquer tipo de aplicação, seja desktop, web, mobile etc. Imagine que o usuário está trabalhando em sua aplicação e de repente alguma exceção é lançada e a aplicação é fechada. É claro que nem sempre é possível se recuperar de uma exceção. Porém, é sempre interessante mostrar ao usuário uma mensagem amigável e evitar que a aplicação prossiga evitando assim que informações inconsistentes sejam geradas.

 

Um primeiro exemplo

Em um primeiro exemplo veremos uma aplicação desktop simples (veja a Figura 1) sem tratamento de exceções, que soma dois números digitados pelo usuário em duas caixas de texto. Aparentemente nenhum erro poderia ocorrer, afinal somar dois números é uma operação trivial, não exigindo nenhum tipo de regra. O código exibido na Listagem 1 é executado após o usuário clicar no botão “Calcular”.

 

Listagem 1. Código executado após o usuário clicar no botão “Calcular”

private void btnCalcular_Click(object sender, EventArgs e)

{

    int calculo;

    calculo = Convert.ToInt16(txtNumero01.Text) +

              Convert.ToInt16(txtNumero02.Text);

    txtResultado.Text = calculo.ToString();

}

 

Ao executar o código da Listagem 1 utilizando os seguintes valores: 32.767 para o valor 1 e 1 para o valor 2 (conforme pode ser visto na Figura 2) o .NET Framework lança a exceção vista na Figura 3. O que aconteceu foi o seguinte: Um Int16 em C# aceita valores na seguinte faixa: -32.768 até 32.767. Ao digitarmos 32.768 a instrução falhou no momento de converter o valor 32.768 para um Int16:

 

calculo = Convert.ToInt16(txtNumero01.Text) +                                  Convert.ToInt16(txtNumero02.Text);

 

Um trecho de código que aparentemente não poderia causar problemas acabou por lançar uma exceção OverflowException, que poderia ser tratada mostrando ao usuário que as informações estão incorretas e pedindo a ele que digite valores válidos. Neste caso o não tratamento da exceção fez com que aplicação tivesse um comportamento não desejado e fechasse automaticamente.

 

Figura 2. Executando aplicação de exemplo

 

Figura 3. Exceção OverflowException lançada pelo .NET Framework

 

Instruções unchecked

Em instruções com valores inteiros podemos evitar erros de aritmética usando as instruções checked e unchecked. A instrução unchecked evita o lançamento da exceção OverflowException. Na Listagem 2 temos um exemplo de unchecked. Não considero uma boa prática o uso dessa instrução, pois ela pode mascarar um problema potencial na aplicação e o resultado de uma instrução sob um bloco de código unchecked pode não ser o resultado correto. O que acontece é que essa instrução evita que a exceção OverflowException seja lançada. Na Figura 4 você pode ver o resultado da adição do maior valor inteiro possível com 10.

 

Listagem 2. Uso da instrução unchecked

static void Main(string[] args)

{

    int a = int.MaxValue; // Valor máximo de um int em C#

    int b = 0;

 

    unchecked // As instruções executadas neste bloco não lançarão a exceção OverflowException

    {

        b = a + 10; // Aqui ocorre uma exceção OverflowException

    }

    Console.WriteLine("Valor de a: {0}\n", a);

    Console.WriteLine("Valor de b (a + 10): {0}\n", b);"



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da .net Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Paulo Sergio Pereira

Bacharel em Ciência da Computação pela Univap(Universidade do Vale do Paraíba). É desenvolvedor Java, Visual Basic, Visual C++.NET e ADVPL. É administrador de bancos de dados Progress, SQL Server e DB2.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03