Tratamento de exceções em VB.Net: exemplos de tratamento Try & Catch

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.

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 de programa comum do sistema de tratamento de erros. Vamos demonstrar como lidar com uma exceção usando as palavras-chave Try, Catch e Finalmente.

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:

Manipulação de exceção

Aqui está uma captura de tela do código:

Manipulação de exceção

Explicação do Código:

  1. Criando um módulo chamado Module1.
  2. 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.
  3. Criando uma variável inteira chamada resposta.
  4. Início do bloco Try/Catch. Precisamos cercar o código que suspeitamos que possa gerar uma exceção com este bloco.
  5. 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.
  6. Capturando a exceção chamada DivideByZeroException e atribuindo a mensagem de exceção gerada ao ex.
  7. Imprimindo algum texto no console para notificar o usuário sobre o tipo/nome da Exceção que foi levantada.
  8. O bloco Finalmente. Isso será executado independentemente de uma exceção ser detectada ou não.
  9. Imprimindo algum texto no console mostrando o resultado da operação de divisão.
  10. Fim do bloco Try, ou seja, fim do código de tratamento de erros.
  11. Fim do subprocedimento divisionFunction.
  12. Início do subprocedimento principal.
  13. 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.
  14. Pausar a janela do console aguardando que o usuário execute uma ação para fechá-la.
  15. Fim do subprocedimento principal.
  16. Fim do módulo.

Exceções definidas pelo usuário em VB.Net

VB.Net permite que você defina suas próprias exceções. Você pode obter classes de exceção definidas pelo usuário na classe ApplicationException. Vamos demonstrar isso com um exemplo:

Exemplo de exceção definida pelo usuário em VB.Net

Aqui está um exemplo de 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:

Exceção definida pelo usuário

Aqui está uma captura de tela do código:

Exceção definida pelo usuário

Explicação do Código:

  1. Criando um módulo chamado Module1.
  2. Criando uma classe de exceção chamada HeightIsZeroException. A classe herda toda a classe ApplicationException.
  3. Criando um subprocedimento denominado Novo. Será necessário um argumento de string denominado texto.
  4. Chamando o construtor da classe base e passando para ele o argumento acima.
  5. Fim do Novo subprocedimento.
  6. Fim da classe HeightIsZeroException.
  7. Criando uma classe chamada Height. Seu modificador de acesso público é Público, o que significa que será acessível publicamente.
  8. Criando uma variável inteira chamada Height e inicializando seu valor como 0.
  9. Criando um subprocedimento chamado showHeight().
  10. Verificando quando o valor da variável Height é 0. Usamos a condição If…Then.
  11. 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.
  12. A parte Else a ser executada quando a condição If não for verdadeira.
  13. Mensagem para imprimir no console mostrando a Altura quando não for 0.
  14. Fim da condição If.
  15. Fim do subprocedimento showHeight().
  16. Fim da aula Altura.
  17. Início do subprocedimento principal.
  18. Criando um objeto chamado Height como uma instância da classe Height.
  19. Início do bloco de tratamento de exceções.
  20. Invocando o subprocedimento showHeight() definido na classe Height. Usamos um objeto desta classe para acessar este método. Esta linha pode resultar em uma exceção. Portanto, nós o cercamos com um código de tratamento de exceções.
  21. Capturando a exceção HeightIsZeroException como objeto ex caso isso ocorra.
  22. A mensagem a ser impressa no console quando HeightIsZeroException for capturada.
  23. Fim do bloco de tratamento de exceções.
  24. Pause a janela do console aguardando que um usuário execute uma ação para fechá-la.
  25. Fim do subprocedimento principal.
  26. 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 de System. Classe de exceção, direta ou indiretamente. Por exemplo:

Exemplo de exceção de lançamento em VB.Net

Abaixo está um exemplo de exceção de lançamento 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:

Lançar exceção

Aqui está uma captura de tela do código:

Lançar exceção

Explicação do Código:

  1. Criando um módulo chamado Module1.
  2. Início do subprocedimento principal.
  3. Início do código de tratamento de erros.
  4. 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.
  5. Capturando uma exceção como objeto ex se a linha lançar uma exceção.
  6. Imprimindo a mensagem de exceção no console caso isso ocorra.
  7. O bloco Finalmente a ser executado independentemente de uma exceção ser detectada ou não.
  8. A mensagem a ser impressa no console quando o bloco Finalmente for executado.
  9. Fim do código de tratamento de exceções.
  10. Pause o console por um tempo, aguardando que um usuário tome medidas para fechá-lo.
  11. Fim do subprocedimento principal.
  12. Fim do módulo.

Resumo

  • Uma exceção refere-se a um problema que surge durante a execução do programa, causado por uma circunstância inesperada.
  • Se você suspeitar que algum código irá gerar uma exceção, coloque-o entre um bloco Try/Catch.
  • O bloco Finalmente vem depois do bloco Try/Catch e é executado independentemente de uma exceção ser detectada ou não.
  • VB.Net nos permite criar exceções personalizadas.