6

WWW::Mechanize を使用して、数秒ごとに実行されるループで特定の Web ページを読み取ります。「GET」がタイムアウトし、スクリプトの実行が停止することがあります。ループを続行して次回「GET」を試行するように、そのようなタイムアウトから回復するにはどうすればよいですか?

4

4 に答える 4

4

使用eval:

eval {
    my $resp = $mech->get($url);
    $resp->is_success or die $resp->status_line;
    # your code
};

if ($@) {
    print "Recovered from a GET error\n";    
}

ブロックは、ページのeval取得中にエラーをキャッチします。

于 2010-09-22T06:02:56.327 に答える
1

1 つのオプションは、タイムアウト エラーを処理するメソッドを実装し、構築時にonerrorハンドラーとして mech オブジェクトにフックすることです。ドキュメントのコンストラクターとスタートアップを参照してください。

null エラー ハンドラを設定することで、エラーを無視することもできます。次に例を示します。

my $mech = WWW::Mechanize->new( onerror => undef );

しかし、私はそれをお勧めしません-後で奇妙な問題が発生するだけです.

于 2010-09-22T05:42:34.873 に答える