Menu
CoddyTech

Khối finally

Thuộc phần Logic và luồng chương trình trong hành trình C# của Coddy. Bài học 27 trên 66.

Khối finally chứa code luôn chạy, dù có xảy ra ngoại lệ hay không, kể cả khi khối try hoặc catch có câu lệnh return.

Tạo cấu trúc try-catch-finally cơ bản:

try
{
    // Đoạn code có thể gây ra ngoại lệ (exception)
    int result = 10 / 2;
    Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
    // Đoạn code xử lý ngoại lệ
    Console.WriteLine("Cannot divide by zero: " + ex.Message);
}
finally
{
    // Đoạn code luôn chạy
    Console.WriteLine("This always executes");
}

Khối finally hữu ích cho các tác vụ dọn dẹp như đóng tệp hoặc kết nối cơ sở dữ liệu:

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
{
    // Luôn đóng tệp, kể cả khi xảy ra ngoại lệ
    if (file != null)
    {
        file.Close();
    }
}
challenge icon

Thử thách

Dễ

Tạo một phương thức có tên ProcessData để:

  1. Nhận một tham số chuỗi đại diện cho tên tệp
  2. Thử mở tệp và đọc nội dung
  3. In nội dung ra bảng điều khiển
  4. Dọn dẹp tài nguyên đúng cách bằng khối finally
  5. Xử lý FileNotFoundException và IOException

Nếu không tìm thấy tệp, hãy in: "ERROR: File not found: [filename]"

Nếu xảy ra lỗi IO khác, hãy in: "ERROR: Could not read the file: [error message]"

Luôn in "File operation completed." trong khối finally, dù có xảy ra ngoại lệ hay không.

Tự làm thử

using System;
using System.IO;

class Program
{
    public static void ProcessData(string filename)
    {
        // Viết code của bạn ở đây
    }
    
    static void Main(string[] args)
    {
        string filename = Console.ReadLine();
        ProcessData(filename);
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch C# online