Menu
Coddy logo textTech

Blok finally

Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 27 z 66.

Blok finally zawiera kod, który zawsze się wykonuje, niezależnie od tego, czy wystąpi wyjątek, czy nie — nawet jeśli w blokach try lub catch znajduje się instrukcja return.

Utwórz podstawową strukturę try-catch-finally:

try
{
    // Kod, który może zgłosić wyjątek
    int result = 10 / 2;
    Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
    // Kod, który obsługuje wyjątek
    Console.WriteLine("Cannot divide by zero: " + ex.Message);
}
finally
{
    // Kod, który wykonuje się zawsze
    Console.WriteLine("This always executes");
}

Blok finally jest przydatny do zadań porządkowych, takich jak zamykanie plików lub połączeń z bazą danych:

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
{
    // Zawsze zamykaj plik, nawet jeśli wystąpił wyjątek
    if (file != null)
    {
        file.Close();
    }
}
challenge icon

Wyzwanie

Łatwy

Utwórz metodę o nazwie ProcessData, która:

  1. Przyjmuje parametr typu string reprezentujący nazwę pliku
  2. Próbuje otworzyć plik i odczytać jego zawartość
  3. Zapisuje zawartość w konsoli
  4. Poprawnie zwalnia zasoby, używając bloku finally
  5. Obsługuje wyjątki FileNotFoundException i IOException

Jeśli nie można znaleźć pliku, wypisz: "ERROR: File not found: [filename]"

Jeśli wystąpi inny błąd IO, wypisz: "ERROR: Could not read the file: [error message]"

Zawsze wypisz "File operation completed." w bloku finally, niezależnie od tego, czy wystąpił wyjątek.

Spróbuj swoich sił

using System;
using System.IO;

class Program
{
    public static void ProcessData(string filename)
    {
        // Wpisz tutaj swój kod
    }
    
    static void Main(string[] args)
    {
        string filename = Console.ReadLine();
        ProcessData(filename);
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C# online