From: sinara@... Date: 1997-02-06T19:06:09+09:00 Subject: [ruby-list:2072] fail failed? 原です。 以下のコードを実行してみると、 -------------^ test.rb #!/usr/local/bin/ruby class FooError < Exception end class BarError < Exception end def foo fail FooError, "foo failed." end def bar begin foo rescue fail BarError, $! # fail BarError, "bar->" + $! # fail "bar->" + $! end end begin bar rescue FooError print "FooError: #$!\n" rescue BarError print "BarError: #$!\n" rescue print "RuntimeError: #$!\n" end -------------$ test.rb 結果は、 FooError: foo failed. となります。本来は BarError: foo failed. ですよね。ちなみに下にコメントしてある fail BarError, "bar->" + $! に替えるとちゃんと BarError: bar->foo failed. と出ます。 ついでに一つ提案なんですが、rescue 節の fail は、直前の例外の再発生ですよね。現在 fail "string" では、RuntimeError を発生しますが、これを直前の error_type の 再発生(でメッセージを "string" にしたもの)にする手もあるか と思うのですがいかがでしょう。