Error handling là quy trình và các kỹ thuật được sử dụng để kiểm soát, xử lý lỗi và ngoại lệ trong mã nguồn PHP. Các kỹ thuật error handling bao gồm sử dụng các hàm như try
, catch
để bắt các ngoại lệ, sử dụng hàm trigger_error
để tạo ra các thông báo lỗi và các cơ chế khác. Hãy cùng Vietnix tìm hiểu thêm về các cách xử lý lỗi (error handling) trong PHP qua bài viết sau đây.
Lỗi error handling là gì?
Xử lý lỗi trong PHP gần giống như cách xử lý lỗi trong các ngôn ngữ lập trình khác. Việc xử lý lỗi mặc định sẽ đưa ra số dòng, tên file và loại lỗi. Các công việc cần làm bao gồm việc kiểm tra, phát hiện và xử lý các tình huống không mong muốn, giúp ứng dụng hoạt động một cách mượt mà và ổn định.
Các cách xử lý lỗi trong PHP
Các phương pháp chính để xử lý lỗi trong PHP mang lại hiệu quả cao như:
- Dùng phương thức
die()
- Xử lý lỗi tùy chỉnh (Custom Error Handling)
Sử dụng hàm die()
Hàm die()
là hàm xử lý cơ bản trong PHP, in ra thông báo và thoát khỏi tập script đang thực thi hiện tại.
Cú pháp
die( $message )
Ví dụ
<?php
// Php code showing default error handling
$file = fopen("vietnix.txt", "w");
?>
Khi chạy đoạn code trên và file vietnix.txt không tồn tại, kết quả sẽ trả về thông báo lỗi runtime.
Output như sau:
PHP Warning: fopen(vietnix.txt): failed to open stream: Permission denied in /home/dac923dff0a2558b37ba742613273073.php on line 5
Để ngăn thông báo này khi dùng hàm die()
, bạn có thể tùy chỉnh lại đoạn code như bên dưới:
<?php
// PHP code to check errors
// If file is not present
// then exit from script
if( !file_exists("vietnix.txt") ) {
die("File is not present");
}
// If file is present
// then continue
else {
$file = fopen("vietnix.txt", "w");
}
?>
Output: File is not present
Trong đoạn code trên, người dùng sẽ thêm hàm điều kiện IF...ELSE
qua đó tự đưa ra thông báo theo ý muốn của mình nếu file không tồn tại hoặc sẽ mở file và thực hiện ghi nếu thành công.
Xử lý lỗi tùy chỉnh
Cách này khá đơn giản, bạn chỉ cần tạo ra một hàm có thể được gọi khi xảy ra lỗi trong PHP.
Cú pháp
error_function( $error_level, $error_message, $error_file, $error_line, $error_context)
Tham số
Hàm này chấp nhận năm tham số như đã đề cập ở trên và được mô tả bên dưới:
- $error_level: Đây là tham số bắt buộc và phải là số nguyên, có mức độ lỗi được xác định trước.
- $error_message: Đây là tham số bắt buộc và là thông báo mà người dùng muốn hiển thị.
- $error_file: Là tham số tùy chọn và được sử dụng để chỉ định file đã xảy ra lỗi.
- $error_line: Là tham số tùy chọn và được sử dụng để chỉ định số dòng đã xảy ra lỗi.
- $error_context: Là tham số tùy chọn và được sử dụng để chỉ định một mảng chứa mọi biến và giá trị của chúng khi xảy ra lỗi.
Error_level – Mức báo cáo lỗi
Các mức lỗi có thể xảy ra như sau:
1 : .E_ERROR
: việc thực thi tập script do lỗi thời gian chạy nghiêm trọng đã bị tạm dừng2 : E_WARNING:
lỗi thời gian chạy không nghiêm trọng việc thực thi tập lệnh đã bị tạm dừng4 : E_PARSE:
lỗi thời gian biên dịch do trình phân tích cú pháp tạo ra8 :E_NOTICE:
Tập script tìm thấy thứ gì đó có thể bị lỗi16 :E_CORE_ERROR:
Lỗi nghiêm trọng xảy ra trong quá trình khởi động tập script lần đầu32 :E_CORE_WARNING:
Lỗi không nghiêm trọng xảy ra trong quá trình khởi động tập script lần đầu8191 :E_ALL :
Tất cả lỗi và cảnh báo
Hàm set_error_handler() – Thiết lập trình xử lý lỗi
Sau khi tạo hàm myerror()
, cần thiết lập trình xử lý lỗi tùy chỉnh vì theo cách thông thường PHP xử lý lỗi, nhưng nếu người dùng thực hiện xử lý lỗi tùy chỉnh (Custom Error Handling), người dùng phải đặt hàm này thay cho đối số và truyền hàm myerror()
dưới dạng một chuỗi.
Ví dụ
<?php
// Creates my error function which prints message
//to user
function myerror($error_no, $error_msg) {
echo "Error: [$error_no] $error_msg ";
echo "\n Now Script will end";
// When error occurred script has to be stopped
die();
}
// Setting set_error_handler
set_error_handler("myerror");
$a = 10;
$b = 0;
// This will generate error
echo($a / $b);;
?>
Output như sau:
Error: [2] Division by zero
Now Script will end
Luôn cố gắng xử lý lỗi bằng cách sử dụng xử lý lỗi tùy chỉnh (Custom Error Handling) vì phương pháp này sẽ hiển thị nhiều thông báo cụ thể hơn theo yêu cầu của người dùng và rất hữu ích. Nếu lỗi không được xử lý theo cách này, khi lỗi xảy ra, tập lệnh sẽ bị tạm dừng theo mặc định. Ngược lại, xử lý lỗi tùy chỉnh cho phép tập lệnh tiếp tục chạy sau khi hiển thị thông báo lỗi.
Mọi người cũng xem:
Lời kết
Vietnix hy vọng nội dung bài viết trên đã giúp bạn hiểu rõ hơn về cách xử lý lỗi trong PHP. Ngoài ra, bạn cũng có thể tham khảo thêm các bài viết khác tại vietnix.vn để hiểu hơn về lập trình, chúc bạn thành công!