Feature #19572
closedAdd a new TracePoint event for rescued exceptions
Description
Summary
Support a new rescue
event type in TracePoint. When the event is triggered, TracePoint#rescued_exception
can be used to access the exception.
Reason
Currently, TracePoint supports raise
events, which can be helpful for debugging by showing which exception occurs at which location. By adding a rescue
event type, we can improve the developer's debugging experience by making it easier to check where an exception is rescued.
Currently, the most effective way to check where an exception is rescued involves setting a breakpoint at the exception's raised location and stepping through the code to see whether the debugger stops inside a rescue block. However, this can be a tedious process, especially in large applications with deep call stacks. By using a TracePoint event for rescue, developers can easily track exceptions as they are rescued by adding a few lines of code:
TracePoint.trace(:rescue) do |tp|
puts "Exception rescued: #{tp.rescued_exception} at #{tp.path}:#{tp.lineno}"
end
This new TracePoint event will also improve the ruby/debug
's ExceptionTracer
and provide users with a better debugging experience.