Issue #6372 has been updated by mame (Yusuke Endoh).

Status changed from Open to Feedback
Assignee set to matz (Yukihiro Matsumoto)

How about:

  class Symbol
    def thrown?
      thrown = true
      catch(self) do
        yield
        thrown = false
      end
      thrown
    end
  end

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Feature #6372: More specific error for uncaught throw
https://bugs.ruby-lang.org/issues/6372#change-26269

Author: trans (Thomas Sawyer)
Status: Feedback
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: core
Target version: 1.9.3


I have this method:

=begin
  class Symbol
    # Does the block throw the symbol?
    # 
    def thrown?
      catch(self) do
        begin
          yield
          true
        rescue ArgumentError => err     # 1.9 exception
          false
        rescue NameError => err         # 1.8 exception
          false
        end
      end
    end
  end
=end

But it was recently pointed out to me that the rescue of ArgumentError and NameError is not good enough b/c they might rescue an unrelated error of the same type. So to make this right there needs to be a more specific error. Perhaps `class ThrowError < ArgumentError`.



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