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 <comicfan...@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.kalib...@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@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel