Skip to content

Get list of active calling handlers?

3 messages · iuke-tier@ey m@iii@g oii uiow@@edu, Duncan Murdoch

#
The SO post https://stackoverflow.com/q/77943180 tried to call 
globalCallingHandlers() from a function, and it failed with the error 
message "should not be called with handlers on the stack".  A much 
simpler illustration of the same error comes from this line:

   try(globalCallingHandlers(warning = function(e) e))

The problem here is that try() sets an error handler, and 
globalCallingHandlers() sees it and aborts.

If I call globalCallingHandlers() with no arguments, I get a list of 
currently active global handlers.  Is there also a way to get a list of 
active handlers, including non-global ones (like the one try() added in 
the line above)?

Duncan Murdoch
#
On Tue, 6 Feb 2024, Duncan Murdoch wrote:

            
There is not. The internal stack is not safe to allow to escape to the
R level.  It would be possible to write a reflection function to
provide some information, but it would be a fair bit of work to design
and I don't think would be of enough value to justify that.

The original SO question would be better addressed to
Posit/RStudio. Someone with enough motivation might also be able to
figure out an answer by looking at the source code at
https://github.com/rstudio/rstudio.

Best,

luke

  
    
#
On 07/02/2024 8:36 a.m., luke-tierney at uiowa.edu wrote:
Thanks!

Duncan