容错弹性代码
tryCatch
tryCatch 返回与执行 expr 相关的值,除非有条件:警告或错误。如果是这种情况,可以通过为相应条件提供处理函数来指定特定的返回值(例如,上面的 return(NA))(参见 ?tryCatch 中的参数 warning 和 error)。这些可以是已经存在的函数,但你也可以在 tryCatch 中定义它们(如上所述)。
选择处理函数的特定返回值的含义
正如我们已经指定的那样,如果 try part 中出现错误,则应该返回 NA,y 中的第三个元素是 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)