如何忽略QueryPath中的PHP可捕获致命错误?

时间:2013-07-25 16:34:27

标签: php html web-scraping fatal-error querypath

我正在使用QueryPath从网站上抓取一些数据。但是,我经常收到下面的错误消息并且脚本终止。

PHP Catchable fatal error:  Argument 1 passed to DOMXPath::__construct() must be an instance of DOMDocument, null given, called in ....inc/QueryPath/QueryPath/CSS/DOMTraverser.php on line 417 and defined in ....inc/QueryPath/QueryPath/CSS/DOMTraverser.php on line 467

错误没有给出任何关于错误来自 my 代码行的线索,但假设它来自$outHtml = htmlqp($outHtml);我尝试使用htmlqp命令加前缀@htmlqp

这不起作用,所以我尝试将htmlqp包装在catch {}语句中,这似乎也没有帮助。

我想做的就是忽略错误并继续而不是让脚本炸弹。救命啊!

2 个答案:

答案 0 :(得分:2)

这是一个致命的致命错误..所以抓住它。

如果你抓住它,你可以得到一个完整的堆栈跟踪。

例如:

try {
   thisfunctionthrowsanexception();
} catch (Exception $e) {
    var_dump(get_class($e));
    echo $e->getTraceAsString();
}

@隐藏错误。你永远不想使用它。

答案 1 :(得分:1)

我只是试图在一些生产代码中解决相反的问题:类型提示根本不起作用。我将罪魁祸首追溯到以下代码:

set_error_handler('errorHandler');

function errorHandler($errno, $errstr, $errfile, $errline) {
    // Whole bunch of irrelevant code
    // ...

    return;
}

它通过基本上什么都不做来处理错误!