PHP
PHP

Trang chủ

Tổng quan về xử lý lỗi (error handling) trong PHP

PHP, viết tắt của Hypertext Preprocessor, là ngôn ngữ lập trình script phía máy chủ được thiết kế đặc biệt cho phát triển web. Điểm nổi bật của PHP so với các ngôn ngữ khác là khả năng tương thích với nhiều loại cơ sở dữ liệu và chạy mượt mà trên các máy chủ web. Tại Vietnix, chúng tôi không chỉ giới thiệu những khái niệm cơ bản về PHP mà còn cung cấp các ví dụ thực tế giúp bạn dễ dàng hiểu và áp dụng PHP vào việc phát triển website. Bên cạnh đó, Vietnix cũng thường xuyên cập nhật các bài viết mới về tính năng, mẹo và thủ thuật lập trình, giúp bạn giải quyết các thách thức phức tạp, từ đó không ngừng nâng cao và hoàn thiện kỹ năng lập trình của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
26/06/2024
6 phút đọc
Theo dõi Vietnix trên

Tổng quan về xử lý lỗi (error handling) trong PHP

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.

Xử lý lỗi (error handling) trong PHP
Các cách xử lý lỗi trong PHP

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ừng
  • 2 : 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ừng
  • 4 : E_PARSE: lỗi thời gian biên dịch do trình phân tích cú pháp tạo ra
  • 8 :E_NOTICE: Tập script tìm thấy thứ gì đó có thể bị lỗi
  • 16 :E_CORE_ERROR: Lỗi nghiêm trọng xảy ra trong quá trình khởi động tập script lần đầu
  • 32 :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 đầu
  • 8191 :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!

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn