Partilhar via


Como: Uso Finally bloqueia

Quando ocorre uma exceção, a execução para e o controle é dado ao manipulador de exceção mais próximo.Isso geralmente significa que linhas de código que você pretende que sempre sejam chamadas não sejam executadas.Alguns recursos de limpeza, como fechamento de um arquivo, sempre devem ser executados, mesmo se uma exceção for lançada.Para fazer isso, você pode usar um bloco finally.O bloco finally será sempre executado, independentemente se uma exceção for, ou não, lançada.

O exemplo de código a seguir usa um bloco try/catch para capturar uma ArgumentOutOfRangeException.O método Main cria duas matrizes e tenta copiar uma para a outra.A ação gera um ArgumentOutOfRangeException e o erro é escrito no console.O bloco finally é executado independentemente do resultado da ação de cópia.

Exemplo

Imports System
Class ArgumentOutOfRangeExample
   
   Public Shared Sub Main()
      Dim array1 As Integer() =  {0, 0}
      Dim array2 As Integer() =  {0, 0}
      Try
         Array.Copy(array1, array2, - 1)
      Catch e As ArgumentOutOfRangeException
         Console.WriteLine("Error: {0}", e)
      Finally
         Console.WriteLine("This statement is always executed.")
      End Try
   End Sub 'Main
End Class 'ArgumentOutOfRangeExample
using System;
class ArgumentOutOfRangeExample
   {
   static public void Main()
      {
      int[] array1={0,0};
      int[] array2={0,0};
         try
         {
         Array.Copy(array1,array2,-1);
         }
         catch (ArgumentOutOfRangeException e)
         {
         Console.WriteLine("Error: {0}",e);
         }
         finally
         {
         Console.WriteLine("This statement is always executed.");
         }
      }
   }

Consulte também

Tarefas

Como: Use o bloco try/catch para interceptar exceções

Como: Lançar exceções explicitamente

Como: Criar exceções definida pelo usuário

Outros recursos

Fundamentos da Manipulação de Exceções