Xử lý ngoại lệ (Exception Handling) trong PHP

blogphp3 thg3 2019
PHP
PHP 5 có một Exception Model tương tự như trong các ngôn ngữ lập trình khác. Exception là quan trọng và cung cấp một điều khiển tốt hơn thông qua xử lý lỗi.

Dưới đây giải thích một số từ khóa liên quan tới exception trong PHP:

  • Try − Một hàm sử dụng một exception nên là một khối try. Nếu exception không kích hoạt, code sẽ tiếp tục như bình thường. Tuy nhiên, nếu exception kích hoạt, một exception được "thrown".

  • Throw − Đây là cách bạn kích hoạt một exception. Mỗi "thrown" phải có ít nhất một "catch".

  • Catch − Mỗi khối "catch" thu nhận một exception và tạo một đối tượng chứa thông tin exception đó.

Khi một exception được ném, code theo sau lệnh đó sẽ không được thực thi, và PHP sẽ cố gắng tìm kiếm khối catch so khớp đầu tiên. Nếu một exception không được bắt, một Fatal Error (lỗi nghiêm trọng) trong PHP sẽ được thông báo với một "Uncaught Exception ..."

  • Một exception có thể được ném, và bắt bên trong PHP. Code có thể được bao quanh trong một khối try.

  • Mỗi khối try phải có ít nhất một khối catch tương ứng. Nhiều khối catch có thể được sử dụng để bắt các lớp exception khác nhau.

  • Các exception có thể được ném (hoặc ném lại) bên trong một khối catch.

Ví dụ

Dưới đây là một đoạn code, bạn sao chép và dán code này vào trong một file và kiểm tra kết quả:

<?php
   try {
      $error = 'Luôn luôn ném lỗi này';
      throw new Exception($error);
      
      // Phần code mà theo sau một ngoại lệ sẽ không được thực thi.
      echo 'Phần code này không bao giờ được thực thi';
   }
   catch (Exception $e) {
      echo 'Bắt ngoại lệ: ',  $e->getMessage(), "\n";
   }
   
   // Tiếp tục tiến trình thực thi
   echo 'Hello World';
?>

Trong ví dụ trên, hàm $e->getMessage được sử dụng để lấy error message. Dưới đây là một số hàm có thể được sử dụng từ lớp Exception trong PHP.

  • getMessage() − thông báo của exception

  • getCode() − code của exception

  • getFile() − tên source file

  • getLine() − source line

  • getTrace() − n mảng của backtrace()

  • getTraceAsString() − chuỗi được định dạng của trace

Tạo Custom Exception Handler trong PHP

Bạn có thể định nghĩa Exception Handler cho riêng bạn. Bạn sử dụng các hàm sau để thiết lập một hàm xử lý ngoại lệ tự định nghĩa.

string set_exception_handler ( callback $exception_handler )

Ở đây, exception_handler là tên hàm để được gọi khi một uncaught exception xuất hiện. Hàm này phải được định nghĩa trước khi gọi hàm set_exception_handler().

Ví dụ

<?php
   function exception_handler($exception) {
      echo "Uncaught exception: " , $exception->getMessage(), "\n";
   }
   set_exception_handler('exception_handler');
   throw new Exception('Xuat hien Uncaught Exception');
   
   echo "Phần code không được thực thi\n";
?>

Gửi bài viết tới Facebook

Gửi hình ảnh