如果问题听起来很幼稚,请原谅。
在尝试递归打开文件连接后尝试在closeAllConnections()
块中tryCatch()
时,似乎没有正确捕获错误。
以下是示例代码:
fileOpenRec<-function(iter){
if(iter<130){
try(
{
aFile="file1.txt"
fileCon<-file(aFile, "a")
fileOpenRec(iter+1)
}
)
}
}
tryCatch(fileOpenRec(1), error=function(e){print("Error!");closeAllConnections()})
上面的代码抛出:Error in file(aFile, "a") : all connections are in use
并且不会关闭连接。
这是预期的行为吗? (我怀疑,如果我在这里遗漏了什么,请纠正我)
PS:要关闭连接我几乎无法解决,例如添加finally
并在那里关闭它们。
答案 0 :(得分:0)
比较
> tryCatch({ stop("oops"); 1 }, error=function(err) "caught")
[1] "caught"
带
> tryCatch({ try(stop("oops")); 1 }, error=function(err) "caught")
Error in try(stop("oops")) : oops
[1] 1
内部try()
捕获(并打印)错误,因此外部tryCatch
无关。从代码中删除try()
。