何时使用trigger_error()和throw new Error()?

3

当我能够捕获失败并采取措施时,我会使用throw new Exception。如果我无法对其采取措施,则只需使用trigger_error()

现在,在PHP 7中有一些新的东西:throw new Error

例如:

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

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

如果我不想“捕获”错误或在mail()失败时执行某些操作,我应该使用throw new Error()还是只使用普通的trigger_error()

什么情况下应该使用throw new Error()而不是简单的trigger_error()

1个回答

2
"\Error"类是在PHP 7中引入的,正如您已经提到的那样。
它的行为与异常完全相同,因为它实现了Throwable
它还被以下子类继承:
  ArithmeticError
    DivisionByZeroError
  AssertionError
  ParseError
  TypeError
    ArgumentCountError

然而,它的行为不像trigger_error(),实际上它的行为与异常完全相同(主要是因为它就是一个异常)。
如果你使用trigger_error(),你无法捕获它,因为它不是一个异常。尽管有解决方法
这主要是我猜测的。
我认为这是为了更清晰地区分错误和异常而存在的,可能未来的计划包括弃用`trigger_error`,只留下`Error`。
回答您的问题。
我会坚持使用“throw”而不是“trigger_error”。它可以被捕获,也是面向对象的编程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接