PHP 7中的异常和错误

在早期版本的PHP中,我们只能处理异常。无法处理错误。在发生致命错误的情况下,它用于停止整个应用程序或应用程序的某些部分。为了克服这个问题,PHP 7添加了throwableinterface来处理异常和错误。

异常: 每当发生致命且可恢复的错误时,PHP 7都会引发异常,而不是中止完整的应用程序或脚本执行。

错误: PHP 7抛出了TypeError,ArithmeticError,ParserError和AssertionError,但警告和注意错误保持不变。使用try / catch块,可以捕获错误实例,现在,FatalErrors可以抛出错误实例。在PHP 7中,添加了throwable接口,以将两个异常分支Exception和Error联合起来,以实现throwable。

示例

<?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";
?>
输出结果

在上面的程序中,我们将得到以下错误-

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

注意:在上面的示例中,我们在空对象上调用方法。该catch用于处理异常,然后继续执行PHP代码。

算术误差

我们将使用算术错误的DivisionByZeroError。但是,我们仍然会在除法运算符上收到警告错误。

示例:算术错误

<?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";
?>
输出结果

上述程序的输出将以警告错误执行-

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

注意:在上面的程序中,我们捕获并报告了DivingByZeroErrorinsidetheintdiv()函数。