タグ

2007年10月8日のブックマーク (2件)

  • net/httpの例外捕捉方法(2) - OVERT MEMO

    先日のNet::HTTPの例外補足方法、 rescue Timeout::Error だけではエラーを捕捉しきれませんでした。*1 たしかErrnoの何かかEOFErrorだったはずなのですが、うっかりエラーメッセージを記録しわすれてしまったうえに、サーバの調子が悪い時にしかお目にかからないのでなかなか再現できません。 あれこれぐぐってみると、EOFErrorもErrnoも起きるような雰囲気。rescue Timeout::Error を指定するときには rescue もしくは rescue Exception の併用が欠かせませんね。 begin Net::HTTP.get(url) rescue puts "exception on HTTP: StandardError #{$!}" rescue Timeout::Error puts "exception on HTTP: Tim

    net/httpの例外捕捉方法(2) - OVERT MEMO
    kynbit
    kynbit 2007/10/08
    Net::httpの例外処理について。exceptionも指定しよう。
  • Net::HTTPの例外補足方法 - OVERT MEMO

    Net::HTTPは内部でTimeoutを利用しているけども、これのエラー補足までの面倒は見てくれない。 なので必ずrescueで補足してあげる必要がある。 begin Net::HTTP.get(url) rescue puts "exception on HTTP: #{$!}" end ・・・と安直にやりたいところだけれど、ここに落とし穴。 実際にHTTP通信がタイムアウトを起こすとこうなってしまう。 /usr/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill': execution expired (Timeout::Error) 引数無しのrescueはStandardErrorとそのサブクラスしか受け付けてくれない。 error_type が省略された時は StandardError のサブクラスである全ての例外を捕捉します。 プログラミング言語

    Net::HTTPの例外補足方法 - OVERT MEMO
    kynbit
    kynbit 2007/10/08
    Net::httpでtimeoutの例外処理の扱い方。明示する必要がある。