ruby-reference-manual:2942
From: okkez _ <redmine@r...>
Date: Tue, 13 Dec 2011 20:44:14 +0900
Subject: [ruby-reference-manual:2942] [るりまプロジェクト - Bug #5506][Assigned] LocalJumpError の説明やサンプルコード実行結果がおかしい
Issue #5506 has been updated by okkez _. Category set to doc Status changed from Open to Assigned Assignee set to okkez _ バージョンによってバラバラの結果になる。 ---------------------------------------- Bug #5506: LocalJumpError の説明やサンプルコード実行結果がおかしい http://redmine.ruby-lang.org/issues/5506 Author: Hiroshi Koyama Status: Assigned Priority: Normal Assignee: okkez _ Category: doc Target version: reporter: ruby_version: http://doc.ruby-lang.org/ja/1.9.2/class/LocalJumpError.html > def foo > proc { return 10 } > end > > begin > foo.call > rescue LocalJumpError => err > p err # => #<LocalJumpError: return from block-closure> > p err.reason # => :return > p err.exit_value # => 10 > end > > begin > Block.new { break 5 }.call > rescue LocalJumpError => err > p err # => #<LocalJumpError: break from block-closure> > p err.reason # => :break > p err.exit_value # => 5 > end foo.call を実行すると、#<LocalJumpError: return from block-closure> ではなく、 #<LocalJumpError: unexpected return> が発生しますぽよ。 あと、Blockというクラスが存在しないので、実行できませんぽよ。 Procに変更すれば、#<LocalJumpError: break from proc-closure> が発生しますぷよ。 さらに、上部に > return, break, retry のいずれかを実行すると発生します。 という記述があるけど、retry の場合は SyntaxError となりますぷお。 $ ruby -v ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux] $ cat test.rb def foo proc { return 10 } end begin foo.call rescue LocalJumpError => err p err # => #<LocalJumpError: return from block-closure> p err.reason # => :return p err.exit_value # => 10 end begin Block.new { break 5 }.call rescue LocalJumpError => err p err # => #<LocalJumpError: break from block-closure> p err.reason # => :break p err.exit_value # => 5 end $ ruby test.rb #<LocalJumpError: unexpected return> :return 10 test.rb:14:in `<main>': uninitialized constant Object::Block (NameError) -- http://redmine.ruby-lang.org -- ML: ruby-reference-manual@m... Info: http://QuickML.com/