tryCatch:未捕获错误

时间:2013-08-15 22:32:02

标签: r error-handling try-catch

如果问题听起来很幼稚,请原谅。 在尝试递归打开文件连接后尝试在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并在那里关闭它们。

1 个答案:

答案 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()