PHP Throwable, Exception và Error là gì? So sánh chi tiết từ cơ bản đến nâng cao
Trong quá trình phát triển ứng dụng PHP, xử lý lỗi (error handling) là một trong những kỹ năng quan trọng nhất để xây dựng hệ thống ổn định, dễ bảo trì và production-ready.
Từ PHP 7 trở đi, cơ chế xử lý lỗi đã thay đổi đáng kể với sự xuất hiện của Throwable. Rất nhiều developer vẫn nhầm lẫn giữa: Throwable, Exception và Error.
Vậy chúng khác nhau như thế nào? Khi nào nên dùng Exception, khi nào nên catch Throwable? Error có nên xử lý hay không?
Bài viết này sẽ phân tích chi tiết từ cơ bản đến nâng cao, kèm ví dụ thực tế và best practices trong môi trường production.
1. Tổng quan về cơ chế xử lý lỗi trong PHP
Trước PHP 7
Ở PHP 5:
- Chỉ có
Exceptionlà có thểtry...catch - Fatal error không catch được
- Script sẽ dừng ngay lập tức
Ví dụ:
try {
undefinedFunction();
} catch (Exception $e) {
echo "Caught";
}
Trong PHP 5 → script sẽ crash. Không catch được.
Sau PHP 7
PHP 7 giới thiệu:
Throwable(interface)Error(class)- Nhiều lỗi nghiêm trọng trở thành catchable
Từ đó, hệ thống được chuẩn hóa lại.
2. Throwable là gì?
Throwable là một interface gốc, đại diện cho tất cả những gì có thể được throw.
Cấu trúc kế thừa:
Throwable (interface)
│
├── Exception
│ └── RuntimeException
│ └── LogicException
│
└── Error
└── TypeError
└── ParseError
└── ArithmeticError
👉 Cả Exception và Error đều implement Throwable.
Điều đó có nghĩa:
catch (Throwable $e)
sẽ bắt được cả Exception và Error.
Yêu cầu đăng nhập
Vui lòng đăng nhập để truy cập nội dung này
Additional Resources
Course Guide
Comprehensive PDF guide with examples
GitHub Repository
Example code for all lessons
Discussion
Have a question about this lesson? Post it here and get answers from instructors and peers.
