- PHP 7 教程
- PHP 7 - 主页
- PHP 7 - 简介
- PHP 7 - 性能
- PHP 7 - 环境设置
- PHP 7 - 标量类型声明
- PHP 7 - 返回类型声明
- PHP 7 - 空合并运算符
- PHP 7 - 宇宙飞船操作员
- PHP 7 - 常量数组
- PHP 7 - 匿名类
- PHP 7 - 闭包::call()
- PHP 7 - 过滤反序列化()
- PHP 7 - 国际字符
- PHP 7 - CSPRNG
- PHP 7 - 期望
- PHP 7 - use 语句
- PHP 7 - 错误处理
- PHP 7 - 整数除法
- PHP 7 - 会话选项
- PHP 7 - 已弃用的功能
- PHP 7 - 删除的扩展和 SAPI
- PHP 7 有用资源
- PHP 7 - 快速指南
- PHP 7 - 有用的资源
- PHP 7 - 讨论
PHP 7 - 错误处理
从 PHP 7 开始,错误处理和报告已发生变化。现在大多数错误不是通过 PHP 5 使用的传统错误报告机制来报告错误,而是通过抛出 Error 异常来处理。与异常类似,这些 Error 异常会冒泡,直到到达第一个匹配的 catch 块。如果没有匹配的块,则将调用使用set_exception_handler()安装的默认异常处理程序。如果没有默认的异常处理程序,则异常将转换为致命错误,并像传统错误一样进行处理。
由于 Error 层次结构不是从 Exception 扩展而来的,因此在 PHP 5 中使用 catch (Exception $e) { ... } 块来处理未捕获异常的代码将不会处理此类错误。需要使用catch (Error $e) { ... } 块或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