Menu
Coddy logo textTech

Le bloc Finally

Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 27 sur 66.

Le bloc finally contient du code qui s'exécute toujours, qu'une exception se produise ou non, même s'il y a une instruction return dans les blocs try ou catch.

Créez une structure try-catch-finally de base :

try
{
    // Code that might throw an exception
    int result = 10 / 2;
    Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
    // Code that handles the exception
    Console.WriteLine("Cannot divide by zero: " + ex.Message);
}
finally
{
    // Code that always executes
    Console.WriteLine("This always executes");
}

Le bloc finally est utile pour les tâches de nettoyage comme la fermeture de fichiers ou de connexions à une base de données :

System.IO.StreamReader file = null;
try
{
    file = new System.IO.StreamReader("data.txt");
    string content = file.ReadToEnd();
    Console.WriteLine(content);
}
catch (System.IO.FileNotFoundException)
{
    Console.WriteLine("File not found.");
}
finally
{
    // Toujours fermer le fichier, même si une exception s'est produite
    if (file != null)
    {
        file.Close();
    }
}
challenge icon

Défi

Facile

Créez une méthode nommée ProcessData qui :

  1. Prend un paramètre de type chaîne de caractères représentant un nom de fichier
  2. Tente d'ouvrir le fichier et de lire son contenu
  3. Écrit le contenu dans la console
  4. Nettoie correctement les ressources en utilisant un bloc finally
  5. Gère les exceptions FileNotFoundException et IOException

Si le fichier est introuvable, affichez : "ERROR: File not found: [filename]"

Si une autre erreur d'E/S se produit, affichez : "ERROR: Could not read the file: [error message]"

Affichez toujours "File operation completed." dans le bloc finally, qu'une exception se soit produite ou non.

Aide-mémoire

Le bloc finally contient du code qui s'exécute toujours, qu'une exception se produise ou non, même s'il y a une instruction return dans les blocs try ou catch.

Structure try-catch-finally de base :

try
{
    // Code qui pourrait lever une exception
    int result = 10 / 2;
    Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
    // Code qui gère l'exception
    Console.WriteLine("Cannot divide by zero: " + ex.Message);
}
finally
{
    // Code qui s'exécute toujours
    Console.WriteLine("This always executes");
}

Le bloc finally est utile pour les tâches de nettoyage comme la fermeture de fichiers ou de connexions à une base de données :

System.IO.StreamReader file = null;
try
{
    file = new System.IO.StreamReader("data.txt");
    string content = file.ReadToEnd();
    Console.WriteLine(content);
}
catch (System.IO.FileNotFoundException)
{
    Console.WriteLine("File not found.");
}
finally
{
    // Toujours fermer le fichier, même si une exception s'est produite
    if (file != null)
    {
        file.Close();
    }
}

Essayez vous-même

using System;
using System.IO;

class Program
{
    public static void ProcessData(string filename)
    {
        // Écrivez votre code ici
    }
    
    static void Main(string[] args)
    {
        string filename = Console.ReadLine();
        ProcessData(filename);
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux