Hatena::ブログ(Diary)

dreammindの日記

2009-02-17 rubyのTimeout::Errorははまりやすい

[] Timeout::Errorに注意

rubyのTimeout::Errorにはまってしまったので、記録しておきます。

net/httpを使ってWebサーバに接続するデーモンプログラムを書いていました。例外はすべてキャッチするつもりでrescueを書いていました。

require 'net/http'
begin
  Net::HTTP.start("www.foo") do |http|
    ...
  end
rescue =>e  # エラータイプを省略
  ...
end

しかし、net/httpではTimeout::Error例外を発生させるではありませんか。

しかもさらに悪いことに、接続先のサーバはめったにタイムアウトしないのでTimeout::Errorが発生することに気がつきませんでした。

いろいろ調べてみると、

今後、例外をすべてキャッチするつもりでコーディングするときは、下記のテンプレートを使っていこうと思います。

begin
  ....
rescue Timeout::Error, StandardError =>e
end

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証