Skip to content

Bug in warning() for condition objects (PR#9274)

2 messages · David Hinds, Luke Tierney

#
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.
#
Thanks.  I think your analysis is probably correct.  Will look into
this and fix shortly.

Best,

luke
On Wed, 4 Oct 2006, dhinds at sonic.net wrote: