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