【发布时间】:2015-07-14 08:14:15
【问题描述】:
复制:
#app.R
library(shiny)
library(RODBC)
savefunc <- function() {
conn <- odbcConnect(...) #put in a conn string u know works
df = data.frame(testing=c("testing"))
columnTypes = list(testing="varchar(128)")
tryCatch(
{
sqlSave(conn, dat=df, tablename ="...", #put in a pre-existing tbl
rownames = FALSE, colnames = FALSE, append=TRUE, varTypes=columnTypes)
},
err=function(errorCondition) {
cat("in err handler")
message(errorCondition)
},
warn=function(warningCondition) {
cat("in warn handler")
message(warningCondition)
},
finally={
odbcClose(conn)
}
)
}
server <- function(input, output) {
observeEvent(input$doBtn, {
savefunc()
})
}
ui <- shinyUI(fluidPage(
mainPanel(
actionButton("doBtn", "Do something")
)
))
shinyApp(ui = ui, server = server)
没有发现错误...虽然 R 似乎仍在运行(没有崩溃),但当您查看 Shiny 应用程序/用户界面时,您会发现它已经死了。控制台中的错误类似于:
Warning: Unhandled error in observer: unable to append to table xxx
observeEvent(input$doBtn)
(根据上面的示例,您可能会得到一些稍微不同的东西)但关键是错误现在会以闪亮的形式传播给观察者。有没有办法让闪亮的应用程序本身也进行故障转移?或者抑制观察者内部的错误?
【问题讨论】:
-
这里有同样的经历。你找到解决办法了吗?
-
@jim 不。抱歉 - 我最终放弃了,只是摆脱了整个 trycatch 块。