0

如果这个问题听起来很幼稚,请原谅。在尝试递归打开文件连接后尝试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:要关闭连接,我几乎没有解决方法,例如添加 afinally并在此处关闭它们。

4

1 回答 1

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()从您的代码中删除。

于 2013-08-16T01:18:12.353 回答