在PHP7中是如何进行错误处理的?

2018-10-31 17:14 更新

在 PHP7 中改变了大多数错误的报告方式。不再通过 PHP5 使用的传统错误报告机制来报告错误,现在大多数错误被作为 Error 异常抛出。这种 Error 异常可以像 Exception 异常一样被第一个匹配的 try / catch 块所捕获。如果没有匹配的 catch 块,则调用异常处理函数(事先通过 set_exception_handler() 注册)进行处理。 如果尚未注册异常处理函数,则按照传统方式处理:被报告为一个致命错误(Fatal Error)。

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

exception_hierarchy

Error 层次结构

  • Throwable
    • Error
      • ArithmeticError
        • DivisionByZeroError
      • AssertionError
      • ParseError
      • TypeError
    • Exception
      • ...

使用示例

<?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
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号