容错弹性代码
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)