容錯彈性程式碼
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)