【问题标题】:How to tell if an error was suppressed by the @ error control operator?如何判断 @error 控制操作符是否抑制了错误?
【发布时间】:2019-03-04 04:01:10
【问题描述】:

我正在使用的第 3 方库在其代码中使用 @ 错误抑制运算符,这会导致通过 @ 抑制的错误仍然会导致错误输出,因为我使用的是自定义错误处理程序 (set_error_handler())

在这个page 上面写着

如果您使用 set_error_handler() 设置了自定义错误处理函数,那么它仍然会被调用,但是这个自定义错误处理程序可以(并且应该)调用 error_reporting(),当触发错误的调用之前时,它将返回 0通过@。

但不清楚我如何准确地捕捉到@前面的错误。

我的问题是如何捕捉通过 @ 抑制的错误?

【问题讨论】:

  • 正如它所说:您的错误处理程序仍将照常调用,但在您的错误处理程序中调用error_reporting() 将产生0。所以你的错误处理程序应该考虑到这一点并采取相应的行动。不确定这里有什么不清楚的地方……?
  • @deceze 啊哈,我看错了。另外,我不知道error_reporting() 实际上会返回一些有价值的东西。谢谢!您可以将其发布为答案,我会接受!

标签: php error-handling suppress-warnings error-suppression


【解决方案1】:

正如它所说:您的错误处理程序仍将像往常一样被调用,但如果在@ 的上下文中产生错误,则在错误处理程序内调用error_reporting() 将产生0。所以你的错误处理程序应该考虑到这一点并采取相应的行动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    相关资源
    最近更新 更多