 VB.NET
: tratamento de erros usando Try-Catch-Finally
VB.NET
: tratamento de erros usando Try-Catch-Finally
Capturar e tratar erros(exceções) é uma das tarefas obrigatórias para todo o programador. O VB.NET trouxe uma novidade que nos auxilia no tratamento de erros : o bloco try-catch-finally. (Se você conhece Java esta em casa...).
O bloco try-catch-finally é usado para envolver o código onde existe a possibilidade de uma exceção/erro ocorrer. Um bloco try-catch-finally é constituído das seguintes seções :
| Try 'Código que pode gerar(levantar) um erro. Catch 'Código para tratamento de erros. Finally 'Código de execução obrigatória. End Try | 
Obs: O VB.NET ainda mantém , por questões de compatibilidade , a sintaxe : "On Error Goto" e você ainda pode usá-la mas prefira usar a estrutura try-catch.
A estrutura try-catch-finally é mais poderosa que a sintaxe anterior pois além de permitir a você fazer um aninhamento de vários tratamentos de erros na mesma estrutura , torna o código mais fácil de ler e manter.
Vamos mostrar na prática o que acabamos de afirmar:
1- Crie uma nova aplicação do tipo Console no Visual Basic.NET
2- No procedimento Sub Main() insira o código abaixo. Este código declara e inicializa três variáveis ; a inicialização da variável k irá causar um erro pois estamos efetuando uma divisão por zero.
| Sub Main() 'Este código gera um erro/exceção Console.WriteLine("Vamos dividir 10 por 0 para ver o que acontece...") Console.WriteLine() 
		    
        Dim i As Integer = 10     
        ' Esta linha vai gerar um
        erro | 
Agora execute o projeto e veja o resultado: O sistema irá gerar uma exceção/erro

 
Vamos agora usar try-catch para tratar o erro. Primeiro vamos inserir o código suspeito de gerar o erro no bloco try e se ocorrer um erro vamos tratá-lo no bloco catch. Veja como fica uma possível utilização para o caso:
| 
 | 
Agora execute o código e veja o resultado:

Observe que não usamos o bloco finally , e que encerramos o bloco com a cláusula - End Try.
Se você quiser , pode usar o bloco finally para executar um código obrigatório. Neste exemplo vamos incluir o bloco finally sempre executando o código : Console.ReadLine()
| Dim i As Integer = 10 Dim j As Integer = 0 Dim k As Integer Try
  k = i \ j
Catch exc As Exception
  Console.WriteLine("Ocorreu um erro !")
Finally
  Console.ReadLine()
End Try | 
Capturando Múltiplas Exceções
Você pode detalhar ainda mais o seu tratamento de erros prevendo múltiplas exceções e tratando-as . Vejamos como fica o nosso exemplo :
| Dim i As Integer = 2147483647 Dim j As Integer = 0 Dim k As Integer = 0 Try i+ = 1   k=i/j 
Catch exc As DivideByZeroException
  Console.WriteLine("Erro: Divisão por zero")
Catch exc As OverflowException
  Console.WriteLine("Erro: Overflow")
Finally
  Console.ReadLine()
End Try | 
Neste código estamos prevendo duas exceções : Divisão por zero e Overflow. Isto permite uma detalhamento do erro facilitando a localização de sua origem. Naturalmente você não vai querer tratar todas as exceções possíveis ; neste caso você usa um bloco catch genérico que trate os erros não previstos, algo como o código abaixo:
Catch exc As Exception
Console.WriteLine("Erro: " & exc.Message)
    | Dim i As Integer = 2147483647 Dim j As Integer = 0 Dim k As Integer = 0 Try i+ = 1   k=i/j 
Catch exc As DivideByZeroException
  Console.WriteLine("Erro: Divisão por zero")
Catch exc As OverflowException
  Console.WriteLine("Erro: Overflow")
Catch exc As Exception
  Console.WriteLine("Error: " & exc.Message)
Finally
  Console.ReadLine()
End Try | 
Então esqueça o velho - On error go to - e passe a usar o bloco try-catch-finally ; é a melhor maneira de tratar exceções em seu código.
E é só... até  logo ...
| Veja os 
    Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique 
	e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? | 
  Gostou ?   Compartilhe no Facebook
Compartilhe no Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter 
Referências: