因此,我的网站上有这个api,由于我要从停机中获取数据的网站,有时会出现HTTP错误。我想知道如果使用自定义错误处理程序发生多个错误,我怎么只能只显示一个错误?
这是我当前的代码:
function Error($errno, $errstr, $errfile, $errline) {
echo "ERROR";
error_log($errstr . " - on line " . $errline);
}
set_error_handler("Error");
答案 0 :(得分:0)
您可以将所有错误存储在数组中,然后仅显示数组中的第一个错误。
答案 1 :(得分:0)
鉴于您无法控制它,最好的方法实际上并不是干净的-也就是说,总的来说,有更好的方法可以使代码更干净。
我对您的其余代码了解不多,但是您需要将整个过程包装起来以检查是否有错误。我不知道var等的来源,但假设使用PHP标准,例如
if (!empty($errno)) {
function Error($errno, $errstr, $errfile, $errline) {
error_log($errstr . " - on line " . $errline);
}
set_error_handler("Error");
if (empty($errorWasDisplayed)) {
$errorWasDisplayed = true;
echo "whatever your error message is";
}
}
这始终是第一个错误,但是如果您需要特定的错误,则只需调整条件以将其纳入其中。
如果需要在错误消息中显示,则可以从函数中返回一个值。
答案 2 :(得分:0)
我找到了解决方案。 die()
防止再次调用该函数。但这也意味着,如果出现另一个错误,则该函数将仅被调用一次,因此不会被记录。
function Error($errno, $errstr, $errfile, $errline) {
echo "ERROR";
error_log($errstr . " - on line " . $errline);
die();
}
set_error_handler("Error");