try {base}R Documentation

Try an Expression Allowing Error Recovery.

Description

try is a wrapper to run an expression that might fail and allow the user's code to handle error-recovery.

Usage

try(expr, first = TRUE)

Arguments

expr an R expression to try
first not for user use!

Details

try is a user-friendly wrapper to restart. The argument first is used to record if restart has already been used, and so ensure that restart is called only once.

Value

The value of the expression if expr is evaluated without error, but an invisible object of class "try-error" containing the error message if it if fails. The normal error handling will print the same message unless options("show.error.messages") is false.

See Also

options for setting error handlers and suppressing the printing of error messages; geterrmessage for retrieving the last error message.

Examples

## this example will not work correctly in example(try), but
## it does work correctly if pasted in
options(show.error.messages = FALSE)
try(log("a"))
print(.Last.value)
options(show.error.messages = TRUE)

## run a simulation, keep only the results that worked.
set.seed(123)
x <- rnorm(50)
doit <- function(x)
{
    x <- sample(x, replace=TRUE)
    if(length(unique(x)) > 30) mean(x)
    else stop("too few unique points")
}
options(show.error.messages = FALSE)
## alternative 1
res <- lapply(1:100, function(i) try(doit(x)))
## alternative 2
res <- vector("list", 100)
for(i in 1:100) res[[i]] <- try(doit(x))
options(show.error.messages = TRUE)
unlist(res[sapply(res, function(x) !inherits(x, "try-error"))])