php - PHP错误处理程序/静音错误

标签 php error-handling

我正在使用一个添加了自定义错误处理程序的应用程序。之所以添加它,是为了可以立即通知我们并跟踪应用程序中的问题。

这里的问题是,在 Debug模式下,我已切换错误处理程序以打印出所有错误。目的是消除所有错误。

现在,我试图从可能已序列化或未序列化的数据库中提取变量。因此,我目前知道的检测它们是否已序列化的唯一方法是添加测试。 (即if (unserialize($var)) { // do it })。

我可以将静音运算符添加到函数调用中,但是自定义错误处理程序将忽略它。有没有一种方法可以检测给定的错误是否被忽略?还是有更好的方法来做到这一点?

我无法修改数据库结构或数据。

最佳答案

I can add the mute operator to the function call, but the custom error handler ignores it.



实际上,在这种情况下,“静音”运算符可以正常工作。通过检查自定义错误处理程序中的错误报告设置,您可以使用@抑制运算符来遵循个别情况:
set_error_handler(function($errNo, $errStr, $errFile, $errLine) {
    if (0 !== error_reporting()) {
        $msg = "$errStr in $errFile on line $errLine";
        throw new ErrorException($msg, $errNo);
    }
});

如果是error_reporting() === 0,则使用@抑制运算符。只要您在启动其余处理例程之前检查该值,就可以了。

关于php - PHP错误处理程序/静音错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14204405/

相关文章:

php - 如何获取 cURL 获取的最后一个 URL?

phpize 报告 "Cannot find config.m4"

php - 如何让 php 在遇到致命异常时返回 500?

python - 我不明白的Python3 AttributeError

php - 热门评论 sql查询

php - 在 mysql 插入查询中阻止攻击性词、阻止链接等?

php - 将部分数据嵌入 Mustache 中

excel - 除以零处理excel

wpf mvvm 错误验证

vba - 函数/命令超时