Try, Catch e Exemplos: Tratamento de Erros – Parte 1

Nesta parte veremos os conceitos sobre as cláusuas try e catch e alguns exemplos com eles.

Por que eu devo ler este artigo:

Neste artigo veremos os conceitos sobre o tratamento de erros com os blocos Try e Catch, em C#. Normalmente, os aplicativos que desenvolvemos possuem diversas tarefas a serem executadas.

É possível que uma destas tarefas gere um erro ou exceção, isto é, uma ocorrência que faz com que o fluxo normal do programa seja alterado. Esse erro ou exceção pode ser simples ou complexo: em algumas situações, a execução do programa simplesmente continua, em outras ela pode ser interrompida abruptamente.

Por estes motivos, devemos dar atenção muito especial à detecção e manipulação de erros em nossas aplicações. No C#, contamos com um mecanismo sofisticado que nos auxilia a produzir códigos de manipulação organizados e muito eficientes, que é a manipulação de exceções.

Há vários motivos que podem fazer com que uma exceção seja lançada, tais como uma falha de hardware, por exemplo. O código que gera essa exceção fica separado do código de manipulação de exceções.

Exceções com try e catch – O manipulador de exceções é um código que captura a exceção lançada e a manipula. Sua principal vantagem é que precisamos escrever apenas uma vez o código de manipulação de uma exceção que pode ocorrer em uma região controlada.

O bloco de código onde as exceções podem ocorrer é chamado de região protegida. Ele é indicado pelo comando try. Para associarmos uma determinada exceção a um bloco de código que a manipulará, usamos uma ou mais cláusulas catch. Veja um exemplo:

try { //linha de código que pode disparar uma exceção int numero = Convert.ToInt32(txtValor.Text); int resultado = 100 / numero; } catch { //linha de código que trata o erro lblMensagem.Text = "Número inválido!"; }

Podemos também capturar o erro e uma instância da classe Exception (o que é geralmente usado nas aplicações em geral):

try { int numero = Convert.ToInt32(txtValor.Text); int resultado = 100 / numero; } catch (Exception ex) { lblMensagem.Text = ex.Message; }

Como vimos acima, no bloco try colocamos os comandos que podem gerar exceção. Neste bloco, podem haver comandos que gerem exceções diferentes, e cada uma possui um catch correspondente. Nos códigos acima, podem ocorrer dois erros diferentes: divisão por zero e formato inválido de número.

Quando existirem um ou mais blocos catch, podemos capturar diversos tipos de exceções diferentes, porém devemos seguir algumas regras:

Veja um exemplo com vários blocos catch:

try { int numero = Convert.ToInt32(txtValor.Text); int resultado = 100 / numero; } catch (FormatException) { lblMensagem.Text = "Formato de número inválido!"; } catch (DivideByZeroException) { lblMensagem.Text = "O número não pode ser zero!"; } catch (Exception ex) { lblMensagem.Text = ex.Message; }

Na próxima parte veremos os conceitos sobre o throw e sobre o bloco finally com mais alguns exemplos para ilustrar nosso artigo.


Próximos

Novidade ;)

  • Cursos de .NET:
    Torne-se um programador .NET completo. Aprenda a desenvolver sites, web services e aplicações mobile utilizando a linguagem C# e os frameworks ASP.NET MVC, Web API, Entity Framework, Xamarin e mais.

Artigos relacionados