Computer >> Máy Tính >  >> Lập trình >> PHP

Các ngoại lệ và lỗi trong PHP 7


Trong các phiên bản PHP trước, chúng tôi chỉ có thể xử lý các ngoại lệ. Không thể xử lý lỗi. Trong trường hợp Lỗi nghiêm trọng, nó được sử dụng để tạm dừng ứng dụng hoàn chỉnh hoặc một số phần của ứng dụng. Để khắc phục sự cố này, PHP 7 đã thêm giao diện ném được để xử lý cả ngoại lệ và lỗi.

Ngoại lệ: Bất cứ khi nào xảy ra lỗi nghiêm trọng và có thể khôi phục được, PHP 7 sẽ đưa ra một ngoại lệ thay vì tạm dừng việc thực thi tập lệnh hoặc ứng dụng hoàn chỉnh.

Lỗi: PHP 7 throwsTypeError, ArithmeticError, ParserError và AssertionError, nhưng các cảnh báo và lỗi thông báo vẫn không thay đổi. Sử dụng khối try / catch, trường hợp lỗi có thể được bắt và bây giờ, FatalErrors có thể tạo ra một trường hợp lỗi. Trong PHP 7, một giao diện có thể ném được thêm vào để hợp nhất hai nhánh ngoại lệ, Ngoại lệ và Lỗi, để triển khai có thể ném.

Ví dụ

<?php
   class XYZ {
      public function Hello() {
         echo "class XYZ\n";
      }
   }
   try {
      $a = new XYZ();
      $a->Hello();
      $a = null;
      $a->Hello();
   }
   catch (Error $e) {
      echo "Error occurred". PHP_EOL;
      echo $e->getMessage() . PHP_EOL ;
      echo "File: " . $e->getFile() . PHP_EOL;
      echo "Line: " . $e->getLine(). PHP_EOL;
   }
   echo "Continue the PHP code\n";
?>

Đầu ra

Trong chương trình trên, chúng ta sẽ gặp lỗi sau -

class XYZ
Error occurred
Call to a member function Hello() on null
File: /home/cg/root/9008538/main.php
Line: 11
Continue with the PHP code

Lưu ý: Trong ví dụ trên, chúng ta gọi một phương thức trên một đối tượng null. Lệnh bắt được sử dụng để xử lý ngoại lệ và sau đó tiếp tục mã PHP.

Lỗi số học

Chúng tôi sẽ sử dụng DivisionByZeroError của lỗi số học. Tuy nhiên, chúng tôi sẽ nhận được lỗi cảnh báo trên toán tử phân chia.

Ví dụ:lỗi số học

<?php
   $x = 10;
   $y = 0;
   try {
      $z = intdiv($x , $y);
   }
   catch (DivisionByZeroError $e) {
      echo "Error has occured\n";
      echo $e->getMessage() . PHP_EOL ;
      echo "File: " . $e->getFile() . PHP_EOL;
      echo "Line: " . $e->getLine(). PHP_EOL;
   }
   echo "$z \n";
   echo " continues with the PHP code\n";
?>

Đầu ra

Đầu ra cho chương trình trên sẽ thực thi với lỗi cảnh báo -

Division by zero
File: /home/cg/root/9008538/main.php
Line: 5
continues with the PHP code

Lưu ý: Trong chương trình trên, chúng tôi bắt và báo cáo hàm DivisionByZeroError insidetheintdiv ().