2008年2月22日

[ruby-list:44683] Re: beginで捉えられないエラー??

pegacorn です。
何度か同じような質問を見た気がしますが…(そして答えた気が…)

08/02/22 に Kabu and Ruby管理人<kabu_and_ruby@xxxxx> さんは書きました:
> 全体をbegin ... rescue ... endで括ったりしたのですが、やはりエラーが出てしまいます。
> ライブラリからのエラーのようですが、どういう意味でしょうか? とほほ、、。
>
>

> c:/ruby/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill': execution expired
> (Timeout::E
> rror)
> from c:/ruby/lib/ruby/1.8/timeout.rb:56:in `timeout'
> from c:/ruby/lib/ruby/1.8/timeout.rb:76:in `timeout'
> from c:/ruby/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'

> コードはこんな感じです。
> begin
> f = open( yahoourl )
> rescue
> puts 'タイムアウトです。再試行します。'
> retry
> end

Timeout::Error は StandardError のサブクラスではないので、error_type を省略した
rescue では捕捉できません。

制御構造 - Rubyリファレンスマニュアル:
> http://www.ruby-lang.org/ja/man/html/_C0A9B8E6B9BDC2A4.html#begin>;
error_type が省略された時は StandardError のサブクラスであ る全ての例外を捕捉します。
<<

timeout.rb:
>||
module Timeout
class Error<Interrupt
end
||<


--
pegacorn

投稿者 xml-rpc : 2008年2月22日 17:44
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/70204
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。