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 ?
Exit status of Rscript when setting options(error=utils::recover)
4 messages · Tomas Kalibera, comic fans, Simon Urbanek
5 days later
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 at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
2 days later
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 at 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 at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
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 at 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 at 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 at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel