[Rd] Bug in warning() for condition objects (PR#9274)

dhinds at sonic.net dhinds at sonic.net
Wed Oct 4 02:32:34 CEST 2006


Full_Name: David Hinds
Version: 2.4.0
OS: Windows XP
Submission from: (NULL) (64.168.232.238)


A (maybe naive) use of tryCatch to trap errors and report as warnings does not
work, i.e.:

  x <- tryCatch(lm(xyzzy), error=warning)

In src/library/base/R/stop.R, the warning() function contains the following
code, for handling condition objects:

        withRestarts({
            .Internal(.signalCondition(cond, message, call))
            .Internal(.dfltStop(message, call))
        }, muffleWarning = function() NULL)

So all conditions result in calling .dfltStop().  It would seem more useful
and/or consistent for warning() to call .dfltWarn(), or in the alternative, to
choose between .dfltStop and .dfltWarn based on the class of the condition
object.




More information about the R-devel mailing list