class DEBUGGER__::CatchBreakpoint

Attributes

last_exc[R]

Public Class Methods

new(pat, cond: nil, command: nil, path: nil) click to toggle source
Calls superclass method DEBUGGER__::Breakpoint::new
# File debug-1.6.3/lib/debug/breakpoint.rb, line 301
def initialize pat, cond: nil, command: nil, path: nil
  @pat = pat.freeze
  @key = [:catch, @pat].freeze
  @last_exc = nil

  super(cond, command, path)
end

Public Instance Methods

description() click to toggle source
# File debug-1.6.3/lib/debug/breakpoint.rb, line 333
def description
  "#{@last_exc.inspect} is raised."
end
setup() click to toggle source
# File debug-1.6.3/lib/debug/breakpoint.rb, line 309
def setup
  @tp = TracePoint.new(:raise){|tp|
    exc = tp.raised_exception
    next if SystemExit === exc
    next if skip_path?(tp.path)

    next if !safe_eval(tp.binding, @cond) if @cond
    should_suspend = false

    exc.class.ancestors.each{|cls|
      if @pat === cls.name
        should_suspend = true
        @last_exc = exc
        break
      end
    }
    suspend if should_suspend
  }
end
to_s() click to toggle source
# File debug-1.6.3/lib/debug/breakpoint.rb, line 329
def to_s
  "#{generate_label("Catch")} #{@pat.inspect}"
end