Bài tập C#

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

C#
Chạy code →
Program.cs
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); }
    }
}
Kết quả khi chạy
Not enough stock

Luyện tập với trình gỡ lỗi

Đặt breakpoint ở một phép gán hoặc điều kiện quan trọng, bấm Debug và xem giá trị các biến cục bộ (local variable) trước khi bước sang dòng tiếp theo.

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.

Tất cả thử thách