Feature #3627: catchのブロックを再実行するメソッド
http://redmine.ruby-lang.org/issues/show/3627

起票者: Makoto Kishimoto
ステータス: Open, 優先度: Low
カテゴリ: core, Target version: 2.0

catchとthrowで、ネストを飛び越えたbreakのようなことができるわけですが、同様のネストを飛び越えたnextのようなもの、を現在のrubyでやるのは少々面倒です。
retryを利用して、

tag = Class.new Exception
begin
 ...
 raise tag
 ...
rescue tag
 retry
end

という手もないではありませんが無理矢理っぽいです。
throwのかわりに、なにか別のメソッド(rewindという名前はどうでしょう?)を実行すると、catchのブロックが再実行される、というのはどうでしょうか?


----------------------------------------
http://redmine.ruby-lang.org