R 避免在发生错误时关闭闪亮的浏览器
当我们在shiny中开发应用程序时,我们知道: 1-如果您在R 避免在发生错误时关闭闪亮的浏览器,r,shiny,R,Shiny,当我们在shiny中开发应用程序时,我们知道: 1-如果您在服务器部分中有一个函数,并且该函数返回一个错误,则浏览器将崩溃/关闭,用户不知道发生了什么 2-如果您有一个函数在另一个渲染函数中返回错误,例如renderDataTable,则错误将显示在应用程序中,而不是显示该表 了解前两点后,我尝试将可能返回错误的函数放在渲染函数中。这样做,用户可以看到错误 例如,如果我想显示一些来自数据库的表,我有一个简单的查询,如: dbGetQuery(con, statement
服务器
部分中有一个函数,并且该函数返回一个错误,则浏览器将崩溃/关闭,用户不知道发生了什么
2-如果您有一个函数在另一个渲染函数中返回错误,例如renderDataTable
,则错误将显示在应用程序中,而不是显示该表
了解前两点后,我尝试将可能返回错误的函数放在渲染函数中。这样做,用户可以看到错误
例如,如果我想显示一些来自数据库的表,我有一个简单的查询,如:
dbGetQuery(con,
statement = glue_sql("SELECT DISTINCT COLUMN1 FROM TABLE1", .con = con)
并且COLUMN1
不存在,则函数将出现错误。如果我在renderDataTable
中有这个函数,那么用户可以看到查询出了问题。如果它就在服务器
内,则浏览器将关闭
问题是,在某些情况下,我无法将查询放入renderDataTable
中。为了显示错误并避免浏览器崩溃,我们可以采用什么方法
谢谢您可以使用
trycatch
捕捉错误,并使用showNotification
显示它。我已经用老的忠实间歇泉闪亮示例说明了这一点,并在trycatch中添加了该示例,以便应用程序不会崩溃:
library(shiny)
ui <- fluidPage(
titlePanel("Old Faithful Geyser Data"),
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
)
server <- function(input, output) {
###
#CATCHING THE ERROR IN A NOTIFICATION
###
tryCatch({
x1 <- DBI::dbGetQuery(con,
statement = glue_sql("SELECT DISTINCT COLUMN1 FROM TABLE1", .con = con))
},
warning = function(warn){
showNotification(paste0(warn), type = 'warning')
},
error = function(err){
showNotification(paste0(err), type = 'err')
})
output$distPlot <- renderPlot({
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins + 1)
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
}
shinyApp(ui = ui, server = server)
库(闪亮)
谢谢你,克里斯,我正朝着同一个方向走。使用showNotification
看起来不错。