Tratamento de exceções em VB.Net (Try Catch)
⚡ Resumo Inteligente
O tratamento de exceções em VB.Net gerencia erros de tempo de execução, como divisão por zero, usando as palavras-chave Try, Catch, Finally e Throw, para que um programa possa responder a problemas de forma adequada em vez de falhar durante a execução.
O que é uma exceção no VB.Net?
An Exceção em VB.Net refere-se a um problema que surge durante a execução do programa. É provocado por uma circunstância inesperada. Um bom exemplo é quando você está realizando uma operação de divisão e depois divide por zero (0). Uma exceção será levantada.
O que é tratamento de exceções em VB.Net?
Com exceções em VB.Net, você pode transferir o controle de um programa de uma parte para outra. No VB.Net, as exceções são tratadas usando as 4 palavras-chave a seguir:
| Palavra-chave | Detalhe |
|---|---|
| Experimente | O trabalho do bloco Try é identificar o bloco de código para o qual uma exceção específica será ativada. Deve ser seguido por um(s) bloco(s) catch. |
| luta | A captura da exceção é feita neste bloco. É um manipulador de exceções no qual a Exceção é tratada. |
| Finalmente | Use o bloco Finalmente para executar um conjunto de instruções, independentemente de ter ocorrido uma exceção ou não. |
| Jogar | Uma exceção é lançada após a ocorrência de um problema. Este é o trabalho da palavra-chave Throw. |
Com os papéis dessas quatro palavras-chave claros, considere como elas se combinam em uma única frase.
Sintaxe de Try Catch em VB.Net
As instruções Try Catch em VB.Net são definidas usando a sintaxe abaixo:
Try [ try_Statement(s) ] [ Exit Try ] [ Catch [ exception_name [ As type ] ] [ When expression ] [ catch_Statement(s) ] [ Exit Try ] ] [ Catch ... ] [ Finally [ finally_Statement(s) ] ] End Try
O bloco Try/Catch deve envolver o código que pode gerar uma exceção. Este código é conhecido como código protegido. Você pode usar várias instruções catch quando precisar capturar vários tipos de exceções.
Exemplo de tratamento de exceções em VB.Net com Try Catch e Finalmente
Com as instruções Try/Catch, você pode separar o código comum do seu programa do sistema de tratamento de erros. Vamos demonstrar como lidar com uma exceção usando as palavras-chave Try, Catch e Finally.
Passo 1) Crie um novo aplicativo de console.
Passo 2) Use este código:
Module Module1 Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer) Dim answer As Integer Try answer = n1 \ n2 Catch ex As DivideByZeroException Console.WriteLine("Exception: {0}", ex) Finally Console.WriteLine("Answer is: {0}", answer) End Try End Sub Sub Main() divisionFunction(4, 0) Console.ReadKey() End Sub End Module
Passo 3) Clique no botão Iniciar na barra de ferramentas para executar o código. Você deve obter a seguinte saída:
Aqui está uma captura de tela do código:
Explicação de Code:
- Criando um módulo chamado Module1.
- Criando um subprocedimento denominado divisionFunction com dois argumentos inteiros n1 e n2. O ByVal é uma palavra-chave VB.Net que afirma que os valores dos argumentos serão passados por valor.
- Criando uma variável inteira chamada resposta.
- Início do bloco Try/Catch. Precisamos cercar o código que suspeitamos que possa gerar uma exceção com este bloco.
- Realizando uma operação de divisão entre os valores das variáveis n1 e n2. O resultado da operação de divisão é atribuído à variável resposta. Este código pode gerar uma exceção, por exemplo, quando dividimos um número por zero, por isso o cercamos com os blocos Try/Catch.
- Capturando a exceção chamada DivideByZeroException e atribuindo a mensagem de exceção gerada ao ex.
- Imprimindo algum texto no console para notificar o usuário sobre o tipo/nome da Exceção que foi levantada.
- O bloco Finalmente. Isso será executado independentemente de uma exceção ser detectada ou não.
- Imprimindo algum texto no console mostrando o resultado da operação de divisão.
- Fim do bloco Try, ou seja, fim do código de tratamento de erros.
- Fim do subprocedimento divisionFunction.
- Início do subprocedimento principal.
- Chamar/invocar o subprocedimento divisionFunction. Os valores dos dois argumentos inteiros são passados aqui. O valor de n1=4 e n2=0. Isso significa que a operação de divisão será 4\0, ou seja, n1\n2.
- Pausar a janela do console aguardando que o usuário execute uma ação para fechá-la.
- Fim do subprocedimento principal.
- Fim do módulo.
Exceções definidas pelo usuário em VB.Net
O VB.Net permite que você defina suas próprias exceções. Você pode obter classes de exceção definidas pelo usuário a partir da classe ApplicationException. Vamos demonstrar isso com um exemplo:
Exemplo de exceção definida pelo usuário em VB.Net
Aqui está um exemplo de uma exceção definida pelo usuário em VB.Net:
Passo 1) Crie um novo aplicativo de console.
Passo 2) Use o seguinte código:
Module Module1 Public Class HeightIsZeroException : Inherits ApplicationException Public Sub New(ByVal text As String) MyBase.New(text) End Sub End Class Public Class Height Dim height As Integer = 0 Sub showHeight() If (height = 0) Then Throw (New HeightIsZeroException("Zero Height found")) Else Console.WriteLine("Height is: {0}", height) End If End Sub End Class Sub Main() Dim hght As Height = New Height() Try hght.showHeight() Catch ex As HeightIsZeroException Console.WriteLine("HeightIsZeroException: {0}", ex.Message) End Try Console.ReadKey() End Sub End Module
Passo 3) Clique no botão Iniciar na barra superior para executar o código. Você deve obter a seguinte saída:
Aqui está uma captura de tela do código:
Explicação de Code:
- Criando um módulo chamado Module1.
- Criando uma classe de exceção chamada HeightIsZeroException. A classe herda toda a classe ApplicationException.
- Criando um subprocedimento denominado Novo. Será necessário um argumento de string denominado texto.
- Chamando o construtor da classe base e passando para ele o argumento acima.
- Fim do Novo subprocedimento.
- Fim da classe HeightIsZeroException.
- Criando uma classe chamada Height. Seu modificador de acesso público é Público, o que significa que será acessível publicamente.
- Criando uma variável inteira chamada Height e inicializando seu valor como 0.
- Criando um subprocedimento chamado showHeight().
- Verificando quando o valor da variável Height é 0. Usamos a condição If…Then.
- Para lançar a HeightIsZeroException se a condição acima for verdadeira. A mensagem Zero Height Found será mostrada quando esta exceção for lançada.
- A parte Else a ser executada quando a condição If não for verdadeira.
- Mensagem para imprimir no console mostrando a Altura quando não for 0.
- Fim da condição If.
- Fim do subprocedimento showHeight().
- Fim da aula Altura.
- Início do subprocedimento principal.
- Criando um objeto chamado Height como uma instância da classe Height.
- Início do bloco de tratamento de exceções.
- Invocando o sub-procedimento showHeight() definido na classe Height. Usamos um objeto dessa classe para acessar esse método. Essa linha pode resultar em uma exceção. Portanto, a envolvemos com um código de tratamento de exceções.
- Capturando a exceção HeightIsZeroException como objeto ex caso isso ocorra.
- A mensagem a ser impressa no console quando HeightIsZeroException for capturada.
- Fim do bloco de tratamento de exceções.
- Pause a janela do console aguardando que um usuário execute uma ação para fechá-la.
- Fim do subprocedimento principal.
- Fim do módulo.
Lançar exceção em VB.Net
No tratamento de exceções, você pode optar por lançar um objeto. No entanto, o objeto deve ser derivado da classe System.Exception, direta ou indiretamente. Por exemplo:
Exemplo de exceção de lançamento em VB.Net
Abaixo está um exemplo de lançamento de exceção em VB.Net:
Passo 1) Crie um novo aplicativo de console.
Passo 2) Use o seguinte código:
Module Module1 Sub Main() Try Throw New ApplicationException("Throwing a custom exception") Catch ex As Exception Console.WriteLine(ex.Message) Finally Console.WriteLine("The Finally Block") End Try Console.ReadKey() End Sub End Module
Passo 3) Clique no botão Iniciar na barra superior para executar o código. Você deve obter o seguinte:
Aqui está uma captura de tela do código:
Explicação de Code:
- Criando um módulo chamado Module1.
- Início do subprocedimento principal.
- Início do código de tratamento de erros.
- Lançando um objeto de exceção. Este código pode gerar uma exceção, portanto, nós o cercamos com um bloco Try/Catch.
- Capturando uma exceção como objeto ex se a linha lançar uma exceção.
- Imprimindo a mensagem de exceção no console caso isso ocorra.
- O bloco Finalmente a ser executado independentemente de uma exceção ser detectada ou não.
- A mensagem a ser impressa no console quando o bloco Finalmente for executado.
- Fim do código de tratamento de exceções.
- Pause o console por um tempo, aguardando que um usuário tome medidas para fechá-lo.
- Fim do subprocedimento principal.
- Fim do módulo.






