[#41778] [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2) — Yui NARUSE <redmine@...>

Bug #3515: FreeBSD wrongly raises ECONNRESET on close(2)

12 messages 2010/07/02

[ruby-dev:41892] [Feature #3627] catchのブロックを再実行するメソッド

From: Makoto Kishimoto <redmine@...>
Date: 2010-07-29 08:33:11 UTC
List: ruby-dev #41892
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

In This Thread

Prev Next