[ruby-core:113170] [Ruby master Feature#19572] Add a new TracePoint event for rescued exceptions
From:
"Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date:
2023-04-09 15:40:26 UTC
List:
ruby-core #113170
Issue #19572 has been updated by Eregon (Benoit Daloze).
Makes sense. FWIW TruffleRuby has a command-line option to print stacktraces of where exceptions are rescued, this would be a generalization of that.
----------------------------------------
Feature #19572: Add a new TracePoint event for rescued exceptions
https://bugs.ruby-lang.org/issues/19572#change-102706
* Author: st0012 (Stan Lo)
* Status: Open
* Priority: Normal
----------------------------------------
**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`](https://github.com/ruby/debug/blob/master/lib/debug/tracer.rb#L150-L166) and provide users with a better debugging experience.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- [email protected]
To unsubscribe send an email to [email protected]
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/