tey*_*non 1 php error-handling
我正在使用我们已添加自定义错误处理程序的应用程序.我们添加此内容的原因是,我们可以立即通知并跟踪应用程序中的问题.
这里的问题是在调试模式下,我已经切换错误处理程序以打印出所有错误.这里的目标是消除所有错误.
现在,我试图从可能序列化或不序列化的数据库中提取变量.因此,我目前知道检测它们是否被序列化的唯一方法是添加测试.(IE if (unserialize($var)) { // do 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);
}
});
Run Code Online (Sandbox Code Playgroud)
如果error_reporting() === 0那时使用了@抑制算子.只要您在启动其余的处理程序之前检查该值,您就可以了.