PHP 7 - Xử lý lỗi

Từ PHP 7, việc xử lý và báo cáo lỗi đã được thay đổi. Thay vì báo cáo lỗi thông qua cơ chế báo cáo lỗi truyền thống được sử dụng bởi PHP 5, giờ đây hầu hết các lỗi được xử lý bằng cách ném các ngoại lệ Lỗi. Tương tự như các ngoại lệ, các ngoại lệ Lỗi này sẽ bong bóng cho đến khi chúng đạt đến khối bắt phù hợp đầu tiên. Nếu không có khối phù hợp, thì một trình xử lý ngoại lệ mặc định được cài đặt vớiset_exception_handler()sẽ được gọi. Trong trường hợp không có trình xử lý ngoại lệ mặc định, thì ngoại lệ sẽ được chuyển thành lỗi nghiêm trọng và sẽ được xử lý giống như lỗi truyền thống.

Vì hệ thống phân cấp Lỗi không được mở rộng từ Exception, mã sử dụng khối catch (Exception $ e) {...} để xử lý các ngoại lệ không có trong PHP 5 sẽ không xử lý các lỗi như vậy. Một khối bắt (Lỗi $ e) {...} hoặc mộtset_exception_handler() cần có trình xử lý để xử lý các lỗi nghiêm trọng.

Thí dụ

<?php
   class MathOperations {
      protected $n = 10;

      // Try to get the Division by Zero error object and display as Exception
      public function doOperation(): string {
         try {
            $value = $this->n % 0;
            return $value;
         } catch (DivisionByZeroError $e) {
            return $e->getMessage();
         }
      }
   }

   $mathOperationsObj = new MathOperations();
   print($mathOperationsObj->doOperation());
?>

Nó tạo ra đầu ra trình duyệt sau:

Modulo by zero