【问题标题】:When to use trigger_error() vs throw new Error()?何时使用 trigger_error() 与 throw new Error()?
【发布时间】:2019-04-15 05:02:56
【问题描述】:

throw new Exception 当我可以catch 失败并采取措施时。如果我对此无能为力,那我就trigger_error()

现在 PHP 7 对我来说有些新东西:throw new Error

例如,

if (!mail(...))
    throw new Error('...');

if (!mail(...))
    trigger_error('...');

如果我不想catch 出现错误或在mail() 失败的情况下做某事,我应该使用throw new Error() 还是只是简单的旧trigger_error()

我们应该使用throw new Error() 和简单的trigger_error() 的哪些实例?

【问题讨论】:

    标签: php exception error-handling php-7


    【解决方案1】:

    正如您已经提到的,\Error 类是在 PHP 7 中引入的。

    它的行为与异常完全一样,因为它实现了Throwable

    它也是以下的子类:

      ArithmeticError
        DivisionByZeroError
      AssertionError
      ParseError
      TypeError
        ArgumentCountError
    

    但是,它的行为不像trigger_error(),实际上它的行为完全像一个异常(主要是因为它是一个异常)。

    如果你trigger_error() 你不能抓住它,因为它不是一个例外。虽然有are workarounds.


    这主要是我的猜测。

    我认为这是为了更清楚地分离错误和异常而存在,未来的计划可能包括弃用 trigger_error 并仅保留 Error


    回答你的问题。

    我会坚持使用 throwing 而不是 trigger_error。它是可捕获的,它是 OOP。

    【讨论】:

      猜你喜欢
      • 2020-08-03
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 2018-12-09
      相关资源
      最近更新 更多