Xử lý ngoại lệ trong C# – Phần 8

Đăng ngày: 20/06/2026 • Tác giả: Quản trị viên
Xử lý ngoại lệ trong C# – Phần 8

Xử lý ngoại lệ trong C# – Phần 8

1. Ngoại lệ trong C# là gì?

Ngoại lệ (Exception) là các lỗi xảy ra trong quá trình thực thi chương trình, có thể do:

  • Lỗi nhập dữ liệu (FormatException)
  • Chia số cho 0 (DivideByZeroException)
  • Lỗi truy cập mảng (IndexOutOfRangeException)
  • Lỗi tập tin (FileNotFoundException)
  • Lỗi null (NullReferenceException)

Ví dụ về lỗi ngoại lệ:

int a = 10, b = 0;
Console.WriteLine(a / b); // Lỗi chia cho 0 (DivideByZeroException)

2. Cấu trúc try-catch trong C#

Để xử lý ngoại lệ, chúng ta dùng try-catch:

try
{
    int a = 10, b = 0;
    Console.WriteLine(a / b);
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("Lỗi: Không thể chia cho 0.");
}

⏳ Kết quả:

Lỗi: Không thể chia cho 0.

3. Bắt nhiều loại ngoại lệ (catch nhiều lần)

try
{
    int[] numbers = { 1, 2, 3 };
    Console.WriteLine(numbers[5]); // Lỗi truy cập mảng
}
catch (IndexOutOfRangeException ex)
{
    Console.WriteLine("Lỗi: Vượt quá phạm vi mảng.");
}
catch (Exception ex)
{
    Console.WriteLine("Lỗi không xác định: " + ex.Message);
}

⏳ Kết quả:

Lỗi: Vượt quá phạm vi mảng.

4. Dùng finally để dọn dẹp tài nguyên

Khối finally luôn được thực thi dù có lỗi hay không.

StreamReader reader = null;
try
{
    reader = new StreamReader("data.txt");
    Console.WriteLine(reader.ReadToEnd());
}
catch (FileNotFoundException ex)
{
    Console.WriteLine("Lỗi: Tập tin không tồn tại.");
}
finally
{
    if (reader != null)
    {
        reader.Close();
        Console.WriteLine("Đã đóng tập tin.");
    }
}

5. Tạo ngoại lệ tùy chỉnh (throw)

Bạn có thể tự tạo ngoại lệ bằng từ khóa throw.

static void CheckAge(int age)
{
    if (age < 18)
    {
        throw new Exception("Bạn chưa đủ tuổi!");
    }
    Console.WriteLine("Bạn đã đủ tuổi.");
}

try
{
    CheckAge(16);
}
catch (Exception ex)
{
    Console.WriteLine("Lỗi: " + ex.Message);
}

⏳ Kết quả:

Lỗi: Bạn chưa đủ tuổi!

6. Tạo ngoại lệ tùy chỉnh (Custom Exception)

Bạn có thể tạo lớp ngoại lệ riêng kế thừa từ Exception.

class InvalidAgeException : Exception
{
    public InvalidAgeException(string message) : base(message) { }
}

static void CheckAge(int age)
{
    if (age < 18)
    {
        throw new InvalidAgeException("Tuổi không hợp lệ.");
    }
    Console.WriteLine("Tuổi hợp lệ.");
}

try
{
    CheckAge(16);
}
catch (InvalidAgeException ex)
{
    Console.WriteLine("Lỗi: " + ex.Message);
}

7. Tóm tắt bài học

✅ Ngoại lệ là gì? – Các lỗi xảy ra khi chạy chương trình.
✅ Dùng try-catch – Để xử lý lỗi.
✅ Dùng finally – Để dọn dẹp tài nguyên.
✅ Dùng throw – Để tạo ngoại lệ tùy chỉnh.
✅ Tạo Custom Exception – Kế thừa từ Exception.

💡 Bài tiếp theo:
👉 Lập trình sự kiện trong C# – Phần 9 🔥

Bài viết liên quan