O que é uma exceção?
Uma exceção se refere 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á gerada.
Neste Tutorial do Visual Basic, você aprenderá:
- O que é uma exceção?
- O que é tratamento de exceções?
- Sintaxe de Try / Catch
- Exemplo para lidar com exceções
- Exceções definidas pelo usuário
- Atirando Objetos
O que é tratamento de exceções?
Com exceções, você pode transferir o controle de um programa de uma parte para outra. No VB.NET, as exceções são tratadas usando as seguintes 4 palavras-chave:
Palavra-chave | Detalhe |
Tentar | 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) de captura. |
Pegar | A captura da exceção é feita neste bloco. É um manipulador de exceção no qual a Exceção é tratada. |
Finalmente | Use o bloco finally para executar um conjunto de instruções, independentemente de ter ocorrido uma exceção ou não. |
Lançar | Uma exceção é lançada após a ocorrência de um problema. Este é o trabalho da palavra-chave Throw. |
Sintaxe de Try / Catch
As instruções Try / Catch seguem a sintaxe fornecida a seguir:
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 para lidar com exceções
Com as instruções Try / Catch, você pode separar o código do programa comum do sistema de tratamento de erros. Vamos demonstrar como lidar com uma exceção usando as palavras-chave Try, Catch e finally.
Etapa 1) Crie um novo aplicativo de console.
Etapa 2) Use este código:
Module Module1Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)Dim answer As IntegerTryanswer = n1 \ n2Catch ex As DivideByZeroExceptionConsole.WriteLine("Exception: {0}", ex)FinallyConsole.WriteLine("Answer is: {0}", answer)End TryEnd SubSub Main()divisionFunction(4, 0)Console.ReadKey()End SubEnd Module
Etapa 3) Clique no botão Iniciar da 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 denominado Módulo1.
- Criação de 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 pode gerar uma exceção com este bloco.
- Executando 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 à resposta variável. Este código pode gerar uma exceção, por exemplo, quando dividimos um número por zero, portanto, o circundamos com os blocos Try / Catch.
- Capturando a exceção chamada DivideByZeroException e atribuindo a mensagem de exceção gerada ao ex.
- Imprimir algum texto no console para notificar o usuário do tipo / nome da Exceção que foi gerada.
- 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.
- Chamando / invocando 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.
- Pausando a janela do console, esperando 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
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:
Etapa 1) Crie um novo aplicativo de console.
Etapa 2) Use o seguinte código:
Module Module1Public Class HeightIsZeroException : Inherits ApplicationExceptionPublic Sub New(ByVal text As String)MyBase.New(text)End SubEnd ClassPublic Class HeightDim height As Integer = 0Sub showHeight()If (height = 0) ThenThrow (New HeightIsZeroException("Zero Height found"))ElseConsole.WriteLine("Height is: {0}", height)End IfEnd SubEnd ClassSub Main()Dim hght As Height = New Height()Tryhght.showHeight()Catch ex As HeightIsZeroExceptionConsole.WriteLine("HeightIsZeroException: {0}", ex.Message)End TryConsole.ReadKey()End SubEnd Module
Etapa 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 denominado Módulo1.
- Criando uma classe de exceção chamada HeightIsZeroException. A classe herda toda a classe ApplicationException.
- Criando um subprocedimento denominado Novo. Levará um argumento de string denominado texto.
- Chamar o construtor da classe base e passar 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 estará acessível publicamente.
- Criando uma variável inteira chamada Height e inicializando seu valor para 0.
- Criando um subprocedimento denominado showHeight ().
- Verificando quando o valor da variável Height é 0. Usamos a condição If ... Then.
- Para lançar o HeightIsZeroException se a condição acima for verdadeira. A mensagem Zero Height Found será exibida 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 é 0.
- Fim da condição If.
- Fim do subprocedimento showHeight ().
- Fim da aula Altura.
- Início do subprocedimento principal.
- Criação de um objeto denominado Height como uma instância da classe Height.
- Início do bloco de tratamento de exceções.
- Invocar 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ção.
- Capturando a Exceção HeightIsZeroException como objeto ex, caso ocorra.
- A mensagem a ser impressa no console quando HeightIsZeroException é detectado.
- Fim do bloco de tratamento de exceções.
- Pause a janela do console esperando que um usuário execute uma ação para fechá-la.
- Fim do subprocedimento principal.
- Fim do módulo.
Atirando Objetos
No tratamento de exceções, você pode escolher lançar um objeto. No entanto, o objeto deve ser derivado de System. Exceptionclass, direta ou indiretamente. Por exemplo:
Etapa 1) Crie um novo aplicativo de console.
Etapa 2) Use o seguinte código:
Module Module1Sub Main()TryThrow New ApplicationException("Throwing a custom exception")Catch ex As ExceptionConsole.WriteLine(ex.Message)FinallyConsole.WriteLine("The Finally Block")End TryConsole.ReadKey()End SubEnd Module
Etapa 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 denominado Módulo1.
- 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.
- Capturar uma exceção como objeto ex se a linha lançar uma exceção.
- Imprimindo a mensagem de exceção no console caso 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 finally for executado.
- Fim do código de tratamento de exceção.
- Pause o console por um momento, aguardando que um usuário execute uma ação para fechá-lo.
- Fim do subprocedimento principal.
- Fim do módulo.
Resumo
- Uma exceção se refere 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 após o bloco Try / Catch e executa se uma exceção é detectada ou não.
- O VB.NET nos permite criar exceções personalizadas.