容錯彈性程式碼

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)