Php 处理外部库中的错误(简单html dom)

Php 处理外部库中的错误(简单html dom),php,simple-html-dom,Php,Simple Html Dom,我正在构建一个网页来抓取一些网页 它通常可以工作,但每个人偶尔都会无法抓取页面,并抛出以下错误: ( ! ) Warning: file_get_contents(URLWASHERE): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in Z:\Wamp\www\spider\simple_html_dom.php on line 555 以下是我抓取页面的方式: $page->load_file(

我正在构建一个网页来抓取一些网页

它通常可以工作,但每个人偶尔都会无法抓取页面,并抛出以下错误:

( ! ) Warning: file_get_contents(URLWASHERE): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in Z:\Wamp\www\spider\simple_html_dom.php on line 555
以下是我抓取页面的方式:

$page->load_file('URLWASHERE');

有没有办法确定是否发生了这种错误?我不知道如何检测它,因为它在库中,而不是我的代码中

我不能使用if(!$page),因为它仍然返回一些内容。但这似乎不是很有帮助,尽管它明显更短


您可以在此处看到输出:

$page成功时:

$page失败时:


我只是想知道是否有错误,这样我就可以让我的程序再试一次。

看来我可以使用

if(error_get_last())
检查到目前为止是否抛出了错误

如果遇到其他错误,这将中断,但我的代码似乎没有错误,除了偶尔出现的错误,所以我将使用这个

不幸的是,这只允许我尝试两次,而不是一直尝试直到成功。

您可以使用该函数获取有关上次错误的信息。您也可以考虑用.</P>来屏蔽警告消息。 此外,在运行此代码之前,您还应重置
error\u get\u last()
,的状态:


这个概念只是创建一个已知的错误。

要想重置
错误\u get\u last()
请看我的答案哦,太棒了,我正试图找到一种方法来做这件事,但运气不好!
@file_get_contents('http://example.com/wjqlshqwd');

$error = error_get_last();
if($error && strpos($error['message'], '404') !== false)
{
    echo 'There was an error';
}
// var_dump or anything else, as this will never be called because of the 0
set_error_handler('var_dump', 0);
@$undef_var;
restore_error_handler();

// error_get_last() is now in a well known state:
// Undefined variable: undef_var