exitCheck provides a mechanism to distinguish the exit status in on.exit expressions.

exitCheck()

Details

It generates a function that is used wihtin a function's body to "flag" normal exits and in its on.exit expression to check the exit status of a function. Note that it will correctly detect errors only if all normal exit are wrapped into a call to it.

Examples

# define some function f <- function(err){ # initialise an error checker success <- exitCheck() # do something on exit that depends on the error status on.exit({ if(success()) cat("Exit with no error: do nothing\n") else cat("Exit with error: cleaning up the mess ...\n") }) # throw an error here if( err ) stop('There is an error') success(1+1) } # without error f(FALSE)
#> Exit with no error: do nothing
#> [1] 2
# with error try( f(TRUE) )
#> Exit with error: cleaning up the mess ... #> Error in f(TRUE) : There is an error