PHP 7 - 错误处理

从PHP 7开始,错误处理和报告已更改.而不是通过PHP 5使用的传统错误报告机制报告错误,现在大多数错误都是通过抛出错误异常来处理的.与异常类似,这些错误异常会在到达第一个匹配的catch块之前冒泡.如果没有匹配的块,则将调用与 set_exception_handler()一起安装的默认异常处理程序.如果没有默认的异常处理程序,那么异常将转换为致命错误,并将像传统错误一样处理.

由于错误层次结构未从Exception扩展,代码使用catch(Exception $ e){...}块来处理PHP 5中未捕获的异常将无法处理此类错误.需要一个catch(Error $ e){...}块或一个 set_exception_handler()处理程序来处理致命错误.

Exception Hierarchy

示例

<?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());
?>

它产生以下浏览器输出 :

Modulo by zero