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"))])

[Package Contents]