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

标签 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;

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

最佳答案

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

如果您想返回TRUE并在一行中触发错误(顺便说一句,我认为它没有任何意义),您可以执行以下操作:

return !trigger_error('Error notice here');

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

如果要退出函数并显示一条错误消息,可以在代码中处理该消息,则应使用Exception。尽管在程序功能的上下文中这些是否有意义尚有争议。

关于php - 为什么PHP的 “trigger_error”返回true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12370221/

相关文章:

PHP if else 回显

php - 在自定义管理页面上提交表单 (Wordpress)

c++ - 无法看到导致核心转储终止的异常

java - 为什么我收到供应商的 "Syntax error on token(s), misplaced construct(s)"错误?

php - SQL 多重连接不起作用

php - Laravel - 使用 Query Builder 函数传递变量

c# - 使用任务在多线程 C# 中进行异常跟踪

c# - 很好地将异常格式化为字符串

异常中的 Python 异常

.net - UnauthorizedAccessException 与 SecurityException