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:
Aqui está uma captura de tela do código:
Explicação do Código:
- 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
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:
Aqui está uma captura de tela do código:
Explicação do Código:
- 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 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.
- 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 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:
Aqui está uma captura de tela do código:
Explicação do Código:
- 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.
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.