TracePoint's raise event should throw 'not supported by this event (RuntimeError)' on calling return_value
In TracePoint class, if a particular introspection method is not supported then 'not supported by this event (RuntimeError)' is thrown.
=== Line event doesn't support raised_exception
TracePoint.trace(:line) do |tp| p tp.raised_exception end #=> RuntimeError: 'raised_exception' not supported by this event
However, that doesn't seem to happen for 'raise' event. The call to return_value stops the trace altogether. Here's the code to reproduce it:
raise StandardError.new, 'Error!'
TracePoint.trace(:raise) do |tp|
p [tp.return_value, tp.raised_exception]
=== Expected Output
#=> `return_value': not supported by this event (RuntimeError)
=== Actual Output
Is this expected behaviour?
Updated by jeremyevans0 (Jeremy Evans) over 2 years ago
- Backport deleted (
1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN)
- Status changed from Open to Closed
This is expected behavior. As the documentation states:
Value from exception raised on the :raise event
Return value from :return, c_return, and b_return event
You cannot call methods not supported by the type. You can use the
event method to check the type of the particular event.