[Rd] Exit status of Rscript when setting options(error=utils::recover)
Simon Urbanek
@|mon@urb@nek @end|ng |rom R-project@org
Mon Mar 18 15:15:46 CET 2019
As Tomas pointed out, it may be helpful to read the R documentation. The error option expects a function, so I suppose you intended something like
options(error=function() {recover(); q(status=1)})
which corresponds to calling dump.frames()
Cheers,
Simon
> On Mar 17, 2019, at 23:44, comic fans <comicfans44 using gmail.com> wrote:
>
> Thanks for explanation, so recover in non-interactive session exit
> with 0 is expected behavior .
> dump.frames said that it always write to file (workspace , or specified file).
> I have a R script run as a auto build stage, so I want to print detail
> backtrace to console
> (with source file, line number) for quickly debug, without saving any dump.
> I tried
>
> options(error= quote({utils::recover;q(status=1)}))
>
> it do exit with 1 when script has error, but it only shows a stripped
> call trace like
>
> Calls: a ... a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> apply
>
> instead of
> ...
> 99: rec.R#5: a(v, depth - 1)
> 100: rec.R#5: a(v, depth - 1)
> 101: rec.R#5: a(v, depth - 1)
> 102: rec.R#5: a(v, depth - 1)
> 103: rec.R#5: a(v, depth - 1)
>
> How can I resolve this ? Thanks for advise
>
>
> On Fri, Mar 15, 2019 at 10:10 PM Tomas Kalibera
> <tomas.kalibera using gmail.com> wrote:
>>
>>
>> Please refer to the documentation (?stop, ?recover, ?dump.frames). In
>> non-interactive use, recover() works as dump.frames(). dump.frames() is
>> documented not to quit R, and the examples show how to quit the R
>> session with a given status automatically after dump.frames(). So in
>> line with the documentation, R continues after the error, it reaches the
>> end of the input, and returns 0.
>>
>> When you run the example with the NULL default error handler (not
>> setting the error option), the exit status is 1 as documented in ?stop.
>>
>> To avoid surprise wrt to the exit status or where execution continues,
>> it is best not to set default error handlers in non-interactive use (or
>> set them so that they exit the session with a given exit status).
>>
>> Tomas
>>
>> On 3/10/19 4:15 AM, comic fans wrote:
>>> Hello, I've noticed that Rscript didn't exit with error code if I set
>>> options error = utils::recover in .Rprofile . for example
>>>
>>> Rscript -e "asdf"
>>>
>>> Error: object 'asdf' not found
>>> No suitable frames for recover()
>>>
>>> echo $?
>>> 0
>>>
>>> if didn't set options in .Rprofile, Rscript exit with error code 1, is
>>> this expected behavior ?
>>>
>>> ______________________________________________
>>> R-devel using r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
More information about the R-devel
mailing list