try                   package: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"))])

