try {base}R Documentation

Try an Expression Allowing Error Recovery


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


try(expr, silent = FALSE)


expr an R expression to try.
silent logical: should the report of error messages be suppressed?


try evaluates an expression and traps any errors that occur during the evaluation. If an error occurs then the error message is printed to the stderr connection unless options("show.error.messages") is false or the call includes silent = TRUE. The error message is also stored in a buffer where it can be retrieved by geterrmessage. (This should not be needed as the value returned in case of an error contains the error message.) try is implemented using tryCatch.


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 fails.

See Also

options for setting error handlers and suppressing the printing of error messages; geterrmessage for retrieving the last error message. tryCatch provides another means of catching and handling errors.


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

## alternatively,
print(try(log("a"), TRUE))

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

[Package base version 2.5.0 Index]