The internal code does more or less signalCondition(e) ## allows for (another) handler cat("\n") ## cleans up console invokeRestart("abort") ## jump to 'abort' restart if not handled
[for back compatibility it also runs the error option code if that is set, but that may go away eventually]. A version of your example:
{
+ tryCatch(Sys.sleep(100), + interrupt = function(e) { + e$message <- "interrupted" + signalCondition(e) + cat("\n") + invokeRestart("abort") + }) + cat("next step\n") + } ^C
Best, luke On Sat, 28 Jul 2018, Gábor Csárdi wrote:
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 Thanks, Gabor ______________________________________________ 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