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 Twitter
Referências: