Giới thiệu
Lớp Exception của PHP triển khai interface Throwable. Lớp ErrorException kế thừa Exception. ErrorException dùng để ném rõ ràng khi muốn bắt và xử lý lỗi thường bị bỏ qua như Notice hay Warning.
PHP core có các hằng số lỗi định nghĩa sẵn:
| Giá trị | Hằng số | Mô tả |
|---|---|---|
| 1 | E_ERROR | Lỗi chạy chết người (fatal). |
| 2 | E_WARNING | Cảnh báo chạy (lỗi không fatal). |
| 4 | E_PARSE | Lỗi parse compile-time. |
| 8 | E_NOTICE | Thông báo chạy. |
| 16 | E_CORE_ERROR | Lỗi fatal khi khởi động PHP. |
| 32 | E_CORE_WARNING | Cảnh báo khi khởi động PHP. |
| 64 | E_COMPILE_ERROR | Lỗi fatal compile-time. |
| 128 | E_COMPILE_WARNING | Cảnh báo compile-time. |
| 256 | E_USER_ERROR | Thông báo lỗi do user tạo. |
| 512 | E_USER_WARNING | Cảnh báo do user tạo. |
| 1024 | E_USER_NOTICE | Thông báo do user tạo. |
| 2048 | E_STRICT | PHP đề xuất thay đổi code để tương thích. |
| 4096 | E_RECOVERABLE_ERROR | Lỗi fatal có thể bắt. |
| 8192 | E_DEPRECATED | Thông báo chạy lỗi thời. |
| 16384 | E_USER_DEPRECATED | Cảnh báo do user tạo lỗi thời. |
| 32767 | E_ALL | Tất cả lỗi và cảnh báo, bao gồm E_STRICT. |
Ngoài thuộc tính/phương thức kế thừa từ Exception, ErrorException thêm một thuộc tính và một phương thức:
protected int severity; final public getSeverity ( void ) : int
Mức độ exception biểu diễn bằng số nguyên liên kết loại lỗi trong bảng trên.
Ví dụ ErrorException
Script: hàm user errhandler đặt làm error handler bằng set_error_handler(). Nó ném ErrorException khi gặp lỗi fatal file không tìm thấy để đọc.
Ví dụ
<?php function errhandler($severity, $message, $file, $line) { if (!(error_reporting() & $severity)) { echo "no error"; return; } throw new ErrorException("Fatal Error: No such file or directory", 0, E_ERROR); } set_error_handler("errhandler"); try { $data = file_get_contents("nofile.php"); echo $data; } catch (ErrorException $e) { echo $e->getMessage(); } ?>Kết quả:
Kết quả
Fatal Error: No such file or directory