为什么PHP的“trigger_error”会返回true?

时间:2012-09-11 12:54:55

标签: php exception exception-handling error-handling

我对自定义函数使用错误处理,并注意所有三种用户错误类型(NOTICE,WARNING和ERROR)都返回 true

我使用 trigger_error 函数在错误处理函数时转义函数(例如插入了无效数据)。我认为逃避该功能的最佳方法是使用:

return trigger_error('Error notice here');

问题是,错误返回 true 。虽然我的所有函数在成功时都不会返回 true ,但在我看来,将来可能会使用它(因此, false 会表示错误)。

为什么这个函数会返回 true ,还是我在退出无效函数时遵循不良做法?

我知道解决方法可能是:

trigger_error('Error notice here');
return false;

但我认为会有更优雅的方法。如果没有,希望对最佳实践有所了解。

2 个答案:

答案 0 :(得分:5)

返回TRUE因为触发错误的操作成功。如果您为第二个参数指定了无效的错误类型,那么它将是FALSE

如果你想在一行中返回TRUE并触发错误(顺便说一下,我看不出来的话),你可以这样做:

return !trigger_error('Error notice here');

顺便说一句,如果你触发E_USER_ERROR,我怀疑是否会达到评估返回值的代码,因为除非你注册了一个错误处理程序来捕获它,否则错误将是致命的。

如果要退出函数并显示可在代码中处理的错误消息,则应使用Exception。虽然这些在程序功能的背景下是否有意义是值得商榷的。

答案 1 :(得分:1)

您询问的解决方案比trigger_error()更优雅。

我建议更优雅的方法可能是抛出异常而不是触发错误。