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 🔥