如果发生多个错误,如何仅显示一个错误?

时间:2018-08-07 19:06:46

标签: php error-handling

因此,我的网站上有这个api,由于我要从停机中获取数据的网站,有时会出现HTTP错误。我想知道如果使用自定义错误处理程序发生多个错误,我怎么只能只显示一个错误?

这是我当前的代码:

function Error($errno, $errstr, $errfile, $errline) {
  echo "ERROR";
  error_log($errstr . " - on line " . $errline);
}
set_error_handler("Error");

3 个答案:

答案 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");