Menu
CoddyTech

Tạo ngoại lệ tùy chỉnh

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

Dù lớp Exception tích hợp sẵn của PHP hoạt động tốt khi xử lý lỗi nói chung, việc tạo các lớp ngoại lệ tùy chỉnh giúp thông báo lỗi cụ thể và có ý nghĩa hơn nhiều. Ngoại lệ tùy chỉnh giúp bạn phân biệt các loại vấn đề khác nhau trong code và xử lý chúng phù hợp.

Để tạo ngoại lệ tùy chỉnh, bạn mở rộng lớp cơ sở Exception của PHP bằng từ khóa extends. Cách kế thừa này giúp ngoại lệ tùy chỉnh có đầy đủ chức năng của ngoại lệ tiêu chuẩn, đồng thời cho phép bạn thêm hành vi riêng hoặc chỉ đơn giản là đặt tên mô tả hơn.

<?php
class InvalidEmailException extends Exception {
    // Lớp (class) này có thể để trống vì kế thừa (inheritance) mọi thứ từ Exception
}

// Bạn cũng có thể thêm thuộc tính (property) hoặc phương thức (method) tùy chỉnh
class CustomException extends Exception {
    public function getCustomMessage() {
        return "Custom error: " . $this->getMessage();
    }
}
?>

Sức mạnh của ngoại lệ tùy chỉnh nằm ở tên gọi mô tả rõ ràng và khả năng bắt các kiểu ngoại lệ cụ thể. Thay vì bắt ngoại lệ chung chung Exception, bạn có thể bắt InvalidEmailException, DatabaseConnectionException hoặc bất kỳ ngoại lệ tùy chỉnh nào khác mà bạn tạo. Nhờ vậy, bạn xử lý lỗi chính xác hơn và dễ bảo trì code hơn.

challenge icon

Thử thách

Dễ

Bạn sẽ nhận một đầu vào: một chuỗi biểu thị tên lớp ngoại lệ. Đầu vào này sẽ là một từ dùng làm tên cho lớp ngoại lệ tùy chỉnh của bạn (ví dụ: NegativeBalanceException hoặc InvalidUsernameException).

Đọc đầu vào và tạo một lớp ngoại lệ tùy chỉnh bằng tên đã cho. Lớp ngoại lệ tùy chỉnh của bạn cần kế thừa lớp cơ sở Exception của PHP. Sau khi tạo lớp, in ra "Custom exception created: ", theo sau là tên lớp bạn nhận được làm đầu vào.

Định dạng đầu vào: Một dòng chứa chuỗi biểu thị tên lớp ngoại lệ (ví dụ: InvalidAgeException)

Đầu ra mong đợi: Custom exception created: , theo sau là tên lớp ngoại lệ

Tự làm thử

<?php
// Đọc tên lớp ngoại lệ
$className = trim(fgets(STDIN));

// TODO: Viết code bên dưới để tạo lớp ngoại lệ tùy chỉnh


// In kết quả ra
echo "Custom exception created: " . $className;
?>
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 PHP online