Phần này trình bày các vấn đề liên quan đến Error và Exception trong PHP. PHP có cung cấp các cơ chế giúp bắt lỗi, giám sát các lỗi và xử lý các lỗi có thể xảy ra khi lập trình. Ngoài ra bạn cũng tự phát sinh ra các lỗi (ngoại lệ) khi chương trình gặp phải vấn đề không thể khắc phục.
Hàm die và exit trong PHP
Hàm exit khi được gọi nó sẽ dừng ứng dụng, kết thúc script php đang chạy, cú pháp exit như sau:
exit ([$status]); //hoặc exit (int $status);
$status
là dòng trạng thái in ra trước khi thoát - bạn có thể không cần truyền tham số này,
chỉ cần gọi exit(), status
cũng có thể là một số nguyên được hiểu là mã trạng thái khi thoát (0 - 255),
giá trị này chưa được PHP sử dụng, nó chỉ là một tham số dự trữ - để sẵn như vậy.
Ví dụ, nếu số chia bằng không thì kết thúc với thông báo lỗi:
<?php $a = 100; // b bằng só ngẫu nhiên từ 0 - 2s $b = rand(0, 2); if ($b == 0) exit('Không thể chia cho số 0'); $c = $a / $b; echo "Thương $a/$b là: $c"; ?>
Hàm die có cú pháp và ý nghĩa giống exit, nghĩa là cũng dừng script php. Trong thực hành bạn dùng exit khi chương trình kết thúc tại đó là bình thường - đã hoàn thành tác vụ, còn dùng die khi có lỗi không thể khắc phục.
Có một điểm về exit cần chú ý là: trước khi dừng script thì nó có chạy một phương thức callback đăng ký trong hệ thống bằng hàm register_shutdown_function, đồng thời các đối tượng có hàm hủy, destructor thì các hàm hủy này sẽ được gọi trước khi kết thúc script.
Hàm register_shutdown_function trong PHP
Hàm register_shutdown_function đăng ký một hàm callback vào hệ thống, nó sẽ tự động được gọi khi script php kết thúc (hàm shutdown). Bạn có thể đăng ký nhiều callback, nó sẽ tự động được gọi theo thứ tự. Ví dụ:
Tham khảo: Callback - Callable PHP
// Đăng ký hàm shutdown, là một hàm vô danh register_shutdown_function(function () { echo '<hr>[Thoát chương trình]<br>'; }); function myShutdown() { echo '
[myShutdown: Thoát chương trình]
'; } // Đăng ký thêm myShutdown là hàm shutdown register_shutdown_function('myShutdown');
Từ giờ mỗi khi kết thúc script php hai hàm trên sẽ được thực thi.