Site logo

PHP Throwable, Exception và Error là gì? So sánh chi tiết từ cơ bản đến nâng cao

5:00 read

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, ExceptionError.

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ó Exception là 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ả ExceptionError đều implement Throwable.

Điều đó có nghĩa:

catch (Throwable $e)

sẽ bắt được cả ExceptionError.


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.