此功能未正确关闭连接(因此我达到最大限制16,显然不是很好):
query.test = function(query) {
con = dbConnect(MySQL(), groups = 'test')
output = tryCatch({
dbGetQuery(con, query)
}, warning = function(w) {
print(w)
}, error = function(e) {
print(e)
}, finally = function() {
dbDisconnect(con)
})
return(output)
}
我认为finally
子句中的语句总是被执行,所以我不清楚为什么这段代码不起作用。
答案 0 :(得分:3)
对于R语法,答案结果有点奇怪:
query.test = function(query) {
output = tryCatch({
con = dbConnect(MySQL(), groups = 'test')
dbGetQuery(con, query)
}, warning = function(w) {
print("warning!")
}, error = function(e) {
print("error encountered!")
print(e)
}, finally = {
dbDisconnect(con)
print("goodbye")
})
return(output)
}
这里的区别是:
}, finally = function() {
dbDisconnect(con)
})
应该是
}, finally = {
dbDisconnect(con)
})
如果有人了解为什么finally
不能以第一种方式运作,我会很感激听到它。