Re^2: R feature request: stop(..) should print its caller call

Martin Maechler Martin Maechler <maechler@stat.math.ethz.ch>
Thu, 22 Jan 1998 12:02:36 +0100


>>>>> "KH" == Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at> writes:

>>>>> Martin Maechler writes:

    >> The following shows what I mean:
    >> tst<-function(x)in.tst(x); in.tst<-function(y)stop(paste("y is",y)); tst(pi)

    >> in R gives

    >> --------------------
    >> Error: y is 3.141593
    >> --------------------

    >> in S-plus gives

    >> ----------------------------------------
    >>> > Error in in.tst(x): y is 3.14159265358979
    >> Dumped    ^^^^^^^^^^^^
    >> ----------------------------------------

    >> For locating bugs / problems in functions, it would be tremendously
    >> helpful if R also printed the name of the function from which it is
    >> called (actually the ``call(..)'' rather than just the function name).

    KH> Martin,

    KH> I am not sure.  I find it more useful to call traceback() after an error
    KH> occurred to find out what really happened.

The existence of a good utility such as traceback() 
should not prevent  stop(..) from producing more informative output.

The reason I think this is really wanted:

Many S- and R- function  composers try to write functions which 
``behave'', i.e. produce reasonable error messages when they are called
with "bad" arguments.

If I (as a function composer) 
think on how to fill the "...." in a  stop(....),
I've always been assuming that stop() would prepend the call (i.e. at least
the calling function).

Martin
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._