Hi, Just to add some information and to clarify why I feel this is an important issue.
If you have a S4 method with a default argument, it seems that you can not catch the warnings emitted during their evaluation. It matters because on some occasions those warnings carry an essential information, that your code needs to use. Martin Morgan added some information about this issue on: http://stackoverflow.com/questions/20268021/how-to-catch-warnings-sent-during-s4-method-selection Basically the C function R_dispatchGeneric uses R_tryEvalSilent to evaluate the method arguments, that seems no to use the calling handlers. Best, Karl On Fri, Nov 29, 2013 at 11:30 AM, Karl Forner <karl.for...@gmail.com> wrote: > Hello, > > I apologized if this had already been addressed, and I also submitted > this problem on SO: > http://stackoverflow.com/questions/20268021/how-to-catch-warnings-sent-during-s4-method-selection > > Example code: > setGeneric('my_method', function(x) standardGeneric('my_method') ) > setMethod('my_method', 'ANY', function(x) invisible()) > > withCallingHandlers(my_method(warning('argh')), warning = function(w) > { stop('got warning:', w) }) > # this does not catch the warning > > It seems that the warnings emitted during the evaluation of the > arguments of S4 methods can not get caught using > withCallingHandlers(). > > Is this expected ? Is there a work-around ? > > Best, > Karl Forner ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel