Tự định nghĩa ngoại lệ nghiệp vụ trong C#
Trong bài học này, bạn sẽ tạo một loại ngoại lệ riêng để thể hiện lỗi nghiệp vụ và bắt chính xác loại lỗi đó.
Giới thiệu
Thay vì ném ra một Exception chung chung, bạn có thể tự định nghĩa ngoại lệ với tên mô tả rõ lỗi nghiệp vụ, ví dụ không đủ hàng trong kho. Nhờ vậy code dễ đọc hơn và phần xử lý lỗi có thể bắt đúng loại lỗi cần xử lý.
Class InsufficientStockException kế thừa từ Exception nên có đầy đủ hành vi của một ngoại lệ thông thường. Phương thức Reserve ném ngoại lệ này khi số lượng yêu cầu lớn hơn số hàng có sẵn. Khối catch chỉ bắt đúng loại InsufficientStockException và in ra thông báo Not enough stock.
Ví dụ C# chạy được
using System;
class InsufficientStockException(string message) : Exception(message) { }
class Program
{
static void Reserve(int available, int requested)
{
if (requested > available) throw new InsufficientStockException("Not enough stock");
}
static void Main()
{
try { Reserve(2, 3); }
catch (InsufficientStockException error) { Console.WriteLine(error.Message); }
}
}
Not enough stockLuyện tập với trình gỡ lỗi
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
- Tuổi không hợp lệ đầu tiên Xác thực các tuổi đã nhập và báo vị trí của mục nhập sai đầu tiên thay vì để chương trình bị lỗi. Dễ
- Cộng các số hợp lệ Cộng các mục là số nguyên và bỏ qua mọi thứ khác, theo cách try/except xử lý dữ liệu đầu vào lỗi. Dễ