从PHP7,错误处理和报告已经改变。PHP5中使用了传统的错误报告机制的错误,现在大多数的错误将通过抛出异常错误处理。类似于异常,这些错误异常会冒泡,直到它们到达第一个匹配的catch块。如果没有匹配的块,那么会使用%uA0set_exception_handler()%uA0安装一个默认的异常处理并被调用,并在情况下,如果没有默认的异常处理程序,那么该异常将被转换为一个致命的错误,并会像传统错误那样处理。
由于%uA0Error%uA0层次结构不是从异常(Exception),代码扩展使用catch%uA0(Exception $e) { ... }%uA0块来处理未捕获的异常,PHP5中将不会处理这样的错误。%uA0 catch (Error $e) { ... }%uA0块或 set_exception_handler()处理程序需要处理的致命错误。

示例
<?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