rescue blocks get an entry in backtrace locations
def foo puts caller(0) end def bar raise rescue foo end bar
rescue in bar
this does not seem to make sense, conceptually a rescue block is not a separate callable entity, but just a section of a method, why should it get its own entry in the call stack?
Updated by ko1 (Koichi Sasada) about 5 years ago
- Assignee set to ko1 (Koichi Sasada)
- Status changed from Open to Feedback
def foo puts caller(0) # (1) end def bar p 0 begin # (3) p 1 raise p 2 rescue foo # (2) end end bar # (4) #=> 0 1 (1) t.rb:2:in `foo' (2) t.rb:12:in `rescue in bar' (3) t.rb:7:in `bar' (4) t.rb:16:in `<main>'
(3) shows they are in begin/end clause and
(2) shows they are in rescue clause.
does it make sense?