我刚刚有过非常相似的经历(未捕获的错误),事实上,只需更换err=function(e)
with error=function(e)
(我想这对于warn
and warning
).
EDIT :
我实际上只是尝试使用你的代码,对我来说,当我这样做时它会起作用:
savefunc <- function() {
tryCatch({
conn <- odbcConnect(...)
df = data.frame(testing=c("testing"))
columnTypes = list(testing="varchar(128)")
tryCatch({
sqlSave(conn, dat=df, tablename="...", rownames=FALSE, colnames=FALSE, append=TRUE, varTypes=columnTypes)
}, error=function(e) {
cat(paste("in err handler\n"),e)
}, warning=function(w) {
cat(paste("in warn handler\n"),w)
}, finally={
odbcClose(conn)
})
}, error=function(e) {
cat(paste("in err handler2\n"),e)
}, warning=function(w) {
cat(paste("in warn handler2\n"),w)
})
}
它显然非常脏,我不太确定它为什么起作用。我刚刚摆脱了message()
调用并封装了两个trycatch()
。
也许值得一试。