On Sat, 28 Jul 2018, Gábor Csárdi wrote:

I don't want to return a value, I want to interrupt the computation,
that's why I need to re-throw .
But before getting back to the user I want to run some cleanup code.

If it is just cleanup you want then a finally clause or on.exit should
do, and will cover all form of non-local transfer of control.

Best,

luke


G.
On Sat, Jul 28, 2018 at 5:59 PM Iñaki Úcar <i.uca...@gmail.com> wrote:

El sáb., 28 jul. 2018 a las 18:30, Gábor Csárdi
(<csardi.ga...@gmail.com>) escribió:

Anyone knows a way to re-throw a caught interrupt condition, so that
it behaves just like the original one? I.e. no error message is
printed, but the execution is stopped of course. With just calling
stop in the error handler, it prints the error message, or, if there
is no error message (like in the original interrupt condition),
another error happens.

tryCatch(Sys.sleep(100), interrupt = function(e) {  e$message <-
"interrupted"; stop(e) } )
<press CTRL + C / ESC here>
#> Error: interrupted

tryCatch(Sys.sleep(100), interrupt = function(e) stop(e))
<press CTRL + C / ESC here>
#> Error in stop(e) : bad error message

Sorry, I probably misunderstood your intention, but... simply by not
calling stop at all? This is what I see:

tryCatch(Sys.sleep(100), interrupt = function(e) do_something <<- 1)
<press CTRL + C / ESC here>
^C>
do_something
[1] 1

Iñaki

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
   Actuarial Science
241 Schaeffer Hall                  email:   luke-tier...@uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to