rescue Exception とすればあらゆる例外を rescue で捕捉できる。
表題の catch は Ruby の 多重ループを抜けるときなどに使う catch のことではなく、「例外を捕捉する」という意味で書いた。
[ruby-list:35487] Re: [ 質問] 例外の補足について
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/ ...
2004-10-09 で書いた 「添付ファイル付メールを送信する Ruby スクリプト」の samail 0.3 には例外発生時のリトライ機能を付けたのだが、それが機能していない。動作させたときのログを確認すると、Timeout::Error を rescue できていなかった。
C# の try catch や delphi の try exception では rescue Exception の動作がデフォルト。Ruby も同じようなものと思いこんでた。Ruby のリファレンスを読んでおけば良かったな。
表題の catch は Ruby の 多重ループを抜けるときなどに使う catch のことではなく、「例外を捕捉する」という意味で書いた。
[ruby-list:35487] Re: [ 質問] 例外の補足について
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/ ...
| begin - rescue - end による例外の補足機能では,補足できない例外があ
|るのでしょうか?
rescueに捕捉する例外を指定しないとStandardError(とそのサブク
ラス)を指定したと見なされます。例外の中にはStandardErrorのサ
ブクラスで無いものもありますから(たとえば、1.6ではNameError
はそうではありません)、その場合には捕捉できません。
具体的に例外を指定するか、
rescue Exception
とするのが対処方法です。Exceptionを指定してあらゆる例外を捕
捉した場合には、思わぬ例外まで捕捉してしまわないように気をつ
けてください。
2004-10-09 で書いた 「添付ファイル付メールを送信する Ruby スクリプト」の samail 0.3 には例外発生時のリトライ機能を付けたのだが、それが機能していない。動作させたときのログを確認すると、Timeout::Error を rescue できていなかった。
C# の try catch や delphi の try exception では rescue Exception の動作がデフォルト。Ruby も同じようなものと思いこんでた。Ruby のリファレンスを読んでおけば良かったな。
以上の内容はhttp://sonic64.com//2004-10-14.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます
モバイルやる夫Viewer Ver0.14