容错弹性代码

tryCatch

tryCatch 返回与执行 expr 相关的值,除非有条件:警告或错误。如果是这种情况,可以通过为相应条件提供处理函数来指定特定的返回值(例如,上面的 return(NA))(参见 ?tryCatch 中的参数 warningerror)。这些可以是已经存在的函数,但你也可以在 tryCatch 中定义它们(如上所述)。

选择处理函数的特定返回值的含义

正如我们已经指定的那样,如果 try part 中出现错误,则应该返回 NAy 中的第三个元素是 NA。如果我们选择 NULL 作为返回值,则 y 的长度将只是 2 而不是 3,因为 lapply 将简单地“忽略/丢弃”返回值为 NULL。另请注意,如果未通过 return 指定显式返回值,则处理函数将返回 NULL(即出现错误警告情况时)。

不受欢迎的警告信息

当我们的 urls 向量的第三个元素打我们的功能,我们可以得到以下警告**,除了到发生错误的事实(readLines 首先抱怨说,它不能打开通过连接警告与实际失效之前的错误** ):

Warning message:
    In file(con, "r") : cannot open file 'I'm no URL': No such file or directory

一个错误 警告,所以我们没有在这种特殊情况下的警告很感兴趣。因此我们在 readLines 中设置了 warn = FALSE,但这似乎没有任何影响。抑制警告的另一种方法是使用

suppressWarnings(readLines(con = url))

代替

readLines(con = url, warn = FALSE)