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.

  • 🔍 exceção: Um problema que surge durante a execução, por exemplo, dividir um número por zero.
  • 🛡️ Tente e apanhe: O bloco `try` envolve o código de risco; o bloco `catch` trata a exceção que ele gera.
  • Finalmente: O bloco Finally é executado independentemente de ocorrer ou não uma exceção.
  • 🚦 Lançar: O método `Throw` gera um objeto de exceção derivado da classe `System.Exception`.
  • 🧩 Exceções personalizadas: Herde a classe ApplicationException para definir seus próprios tipos de exceção.
  • 🤖 Ajuda da IA: GitHub Copilot e IntelliCode Gere blocos Try Catch à medida que digita.

Tratamento de exceções em VB.Net

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:

Saída do console do VB.Net Try Catch Finally mostrando a exceção DivideByZeroException capturada.

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

Exemplo de código Try Catch Finally em VB.Net mostrado no Visual Studio.

Explicação de Code:

  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

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:

Mensagem HeightIsZeroException definida pelo usuário em VB.Net impressa no console

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

Exemplo de código de classe de exceção definida pelo usuário em VB.Net no Visual Studio

Explicação de Code:

  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 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.
  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 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:

Saída do console da instrução Throw do VB.Net mostrando a mensagem de exceção personalizada.

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

Exemplo de código VB.Net para lançar uma exceção com Try Catch Finally.

Explicação de Code:

  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.

Perguntas Frequentes

Sim. Uma instrução `Try` é válida sem um `Crack` desde que inclua um bloco `Finally`. Essa forma `Try Finally` executa um código de limpeza, mas não trata a exceção em si.

Sim. Liste vários blocos Catch para lidar com diferentes tipos de exceção. Ordene-os do mais específico para o menos específico, pois o VB.Net os verifica em sequência e usa a primeira correspondência.

Quase sempre. O comando `finally` é executado independentemente de uma exceção ser capturada ou não, e mesmo após um `Return`. Ele só é ignorado em caso de um `End` ou uma `StackOverflowException`.

O método `throw` relança a exceção atual e preserva sua pilha original. trace. O lançamento de ex reinicia a pilha. trace para a linha atual, ocultando onde o erro realmente começou. Prefira lançar uma exceção simples.

Um erro de sintaxe é detectado pelo compilador antes da execução do programa. Uma exceção ocorre em tempo de execução, durante a execução do programa, e pode ser tratada com um bloco Try Catch.

As exceções mais comuns incluem DivideByZeroException, NullReferenceException, IndexOutOfRangeException, FormatException e OverflowException. Todas herdam de System.Exception e podem ser capturadas individualmente.

Sim. Travas deslizantes portáteis Copiloto do GitHub Transforma um comentário em linguagem simples em um bloco Try Catch Finally completo e sugere o tipo de exceção correto. Sempre revise o manipulador gerado.

Sim. Visual Studio IntelCode Oferece autocompletar linhas inteiras e sensíveis ao contexto para cláusulas Catch e tipos de exceção, aprendido a partir de milhares de projetos de código aberto.

Resuma esta postagem com: