Partager via


Comment utiliser les blocs finals

Lorsqu’une exception se produit, l’exécution s’arrête et le contrôle est donné au gestionnaire d’exceptions approprié. Cela signifie souvent que les lignes de code que vous prévoyez d’exécuter sont ignorées. Certains nettoyages de ressources, tels que la fermeture d’un fichier, doivent être effectués même si une exception est levée. Pour ce faire, vous pouvez utiliser un finally bloc. Un finally bloc s’exécute toujours, que l’exception soit levée ou non.

L’exemple de code suivant utilise un bloc try/catch pour intercepter un ArgumentOutOfRangeException. La Main méthode crée deux tableaux et tente de copier l’un vers l’autre. L’action génère un ArgumentOutOfRangeException car length est spécifié en tant que -1 et l’erreur est écrite dans la console. Le finally bloc s’exécute indépendamment du résultat de l’action de copie.

class ArgumentOutOfRangeExample
{
    public static void Main()
    {
        int[] array1 = {0, 0};
        int[] array2 = {0, 0};

        try
        {
            Array.Copy(array1, array2, -1);
        }
        catch (ArgumentOutOfRangeException e)
        {
            Console.WriteLine($"Error: {e}");
            throw;
        }
        finally
        {
            Console.WriteLine("This statement is always executed.");
        }
    }
}
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)
            Throw
        Finally
            Console.WriteLine("This statement is always executed.")
        End Try
    End Sub
End Class

Voir aussi