php - PHP 7 中 Error 和 ErrorException 的区别

标签 php exception error-handling php-7

在 PHP 7 的文档中,我注意到两个预定义的异常,ErrorErrorException几乎完全相同,ErrorException 具有额外的 $severity 属性和 Error 仅在 PHP 7 中引入,而 ErrorException 从 PHP 5.1 开始就存在。

据我所知,Error 是我应该用来捕获所有内部 PHP 错误(例如类型错误)的异常,但我不明白 的目的是什么ErrorException 异常。它们各自的用途是什么,我应该将我的自定义异常基于它们中的任何一个,还是应该坚持使用通常的 Exception

最佳答案

您可以从这个 page which describes errors in php 中捕获 Error 类的用途

PHP 7 changes how most errors are reported by PHP. Instead of reporting errors through the traditional error reporting mechanism used by PHP 5, most errors are now reported by throwing Error exceptions.

自身的相同描述Error页:

Error is the base class for all internal PHP errors.

所以您不应该将此类用于您的用户定义的异常。

目的ErrorException你可以从这个good SO question/answers :

ErrorException is mostly used to convert php error (raised by error_reporting) to Exception

但是在 php7 中你不需要将 php error 转换为 Exception。

所以你基本上应该扩展简单的 Exception 或者你可以在标准情况下使用这些预定义的 SPL Exceptions 集(例如 InvalidArgumentExceptionOutOfBoundsExceptionBadFunctionCallException、...)

关于php - PHP 7 中 Error 和 ErrorException 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36323571/

相关文章:

php - 使用 mysql 查询(codeigniter)检索以 json 格式保存的数据

php - yii2 cron 给出错误 "PDO not found"

python - Spyne 故障 - HTTP 返回代码

python - 在 python 3 中禁用异常链接

python:如何起床直到我的代码出现最后一个错误

javascript - php 行,每行都有一个我想重定向到外部页面的按钮

php - composer.lock 时间戳格式

java - 为什么在尝试从列表中删除元素时会收到 UnsupportedOperationException?

asp.net-mvc - Controller MVC中的错误传播

c++ - 如何使函数调用防弹?