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