2009年05月19日

RubyでTimeout::Errorを拾う

とあるルールに基いてWEBのリンクを辿りながらページを取得する処理をRubyで書いて、寝ている間にゆったりと回していたのですが、起きたら「Timeout::Error」で止まってました。わーい、やり直しだー。

普通に「begin 〜 rescue」でくくっても「Timeout::Error」は拾わないそうです。(使用バージョン、1.8.7)

begin
hoge
rescue => e
p e
retry
rescue Timeout::Error => e
p e
retry
end

みたいな感じで両方拾ってあげないといけないそうです。今晩は無事に処理を完了してくれますように。