什么时候使用trigger_error()与抛出新的Error()?

时间:2018-11-12 13:03:18

标签: php exception error-handling php-7

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

现在PHP 7对我来说有些新东西:if (!mail(...)) throw new Error('...');

例如,

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

catch

如果我不想mail()错误,或者在throw new Error()失败的情况下要做什么,应该使用trigger_error()还是普通的throw new Error()

与简单的trigger_error()和简单的mydat<-data.frame(DB=c("NO","NO","NO","NO",'YES','YES','YES','YES'), DL =c("NO","NO","YES","YES",'NO','NO','YES','YES')) mydat$NEW <- ifelse(mydat$DB=="YES", "DB", ifelse(mydat$DL=="YES", "DL", ifelse(mydat$DB=="YES" & mydat$DL=="YES","DBL", "NO"))) 相比,我们应该使用哪些实例?

1 个答案:

答案 0 :(得分:2)

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

由于它实现了Throwable,因此它的行为就像异常一样。

它也是以下内容的子类:

  ArithmeticError
    DivisionByZeroError
  AssertionError
  ParseError
  TypeError
    ArgumentCountError

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

如果您trigger_error()不能捕获它,因为它也不例外。尽管有are workarounds


这主要是我的反对。

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


回答您的问题。

我会坚持使用throwing而不是trigger_error。可以捕捉,是OOP。