R: Declare an error safe for the user to see

safeError {shiny} | R Documentation

## Declare an error safe for the user to see

### Description

This should be used when you want to let the user see an error message even if the default is to sanitize all errors. If you have an error `e` and call `stop(safeError(e))`, then Shiny will ignore the value of `getOption("shiny.sanitize.errors")` and always display the error in the app itself.

### Usage

    safeError(error)

### Arguments

`error` | Either an "error" object or a "character" object (string). In the latter case, the string will become the message of the error returned by `safeError`.

### Details

An error generated by `safeError` has priority over all other Shiny errors. This can be dangerous. For example, if you have set `options(shiny.sanitize.errors = TRUE)`, then by default all error messages are omitted in the app, and replaced by a generic error message. However, this does not apply to `safeError`: whatever you pass through `error` will be displayed to the user. So, this should only be used when you are sure that your error message does not contain any sensitive information. In those situations, `safeError` can make your users' lives much easier by giving them a hint as to where the error occurred.

### Value

An "error" object

### See Also

`shiny-options`

### Examples

    ## Only run examples in interactive R sessions
    if (interactive()) {

    # uncomment the desired line to experiment with shiny.sanitize.errors
    # options(shiny.sanitize.errors = TRUE)
    # options(shiny.sanitize.errors = FALSE)

    # Define UI
    ui <- fluidPage(
      textInput('number', 'Enter your favorite number from 1 to 10', '5'),
      textOutput('normalError'),
      textOutput('safeError')
    )

    # Server logic
    server <- function(input, output) {
      output$normalError <- renderText({
        number <- input$number
        if (number %in% 1:10) {
          return(paste('You chose', number, '!'))
        } else {
          stop(
            paste(number, 'is not a number between 1 and 10')
          )
        }
      })
      output$safeError <- renderText({
        number <- input$number
        if (number %in% 1:10) {
          return(paste('You chose', number, '!'))
        } else {
          stop(safeError(
            paste(number, 'is not a number between 1 and 10')
          ))
        }
      })
    }

    # Complete app with UI and server components
    shinyApp(ui, server)
    }

[Package shiny version 1.0.3 Index]