From: sheepman Date: 2007-06-13T22:04:28+09:00 Subject: [ruby-dev:30970] exceptions that Fiber#yield raises こんばんは、sheepman です。 Fiber#yield が投げる例外が、バックトレースに情報を含んでないので デバッグの役に立ちません。どこでエラーが起きたか分かるようにできない でしょうか。例えば以下みたいな感じで。 $ cat r.rb class Fiber def self.new2(&b) self.new { begin b.yield rescue => e e end } end def yield2 ret = self.yield if ret.is_a? Exception raise ret else ret end end end def raize raise StandardError end f = Fiber.new2 do raize end f.yield2 $ ruby-1.9 -v r.rb ruby 1.9.0 (2007-06-10 patchlevel 0) [i686-linux] r.rb:23:in `raise': StandardError (StandardError) from r.rb:23:in `raize' from r.rb:27:in `block in
' from r.rb:5:in `yield' from r.rb:5:in `block in new2' -- sheepman / TAMURA Takashi sheepman@sheepman.sakura.ne.jp