try
位於 base
包(package)。 說明
try
是一個包裝器,用於運行可能失敗的表達式並允許用戶的代碼處理error-recovery。
用法
try(expr, silent = FALSE,
outFile = getOption("try.outFile", default = stderr()))
參數
expr |
一個R嘗試表達。 |
silent |
邏輯:是否應該抑製錯誤消息的報告? |
outFile |
connection ,或命名要打印到的文件的字符串(通過 |
細節
try
計算表達式並捕獲計算期間發生的任何錯誤。如果發生錯誤,則錯誤消息將打印到 stderr
連接,除非 options("show.error.messages")
為 false 或調用包含 silent = TRUE
。錯誤消息也存儲在緩衝區中,可以通過 geterrmessage
檢索。 (這不是必需的,因為發生錯誤時返回的值包含錯誤消息。)
try
是使用 tryCatch
實現的;對於編程來說,像 tryCatch(expr, error = function(e) e)
(或其他簡單的錯誤處理函數)這樣的東西代替 try(expr, silent = TRUE)
可能更高效、更靈活。
將 outFile
的默認值設置為 stdout()
可能很有用,即
options(try.outFile = stdout())
而不是默認的 stderr()
,特別是當 try()
在 Sweave
代碼塊內使用時,錯誤消息應出現在生成的文檔中。
值
如果expr
表達式的值被評估而沒有錯誤:否則從類"try-error"
繼承的不可見對象包含錯誤消息,錯誤條件作為"condition"
屬性。
警告
請勿測試
if (class(res) == "try-error"))
就好像沒有錯誤一樣,結果可能(現在或將來)具有長度 > 1 的類。請改用if(inherits(res, "try-error"))
。
例子
## this example will not work correctly in example(try), but
## it does work correctly if pasted in
options(show.error.messages = FALSE)
try(log("a"))
print(.Last.value)
options(show.error.messages = TRUE)
## alternatively,
print(try(log("a"), TRUE))
## run a simulation, keep only the results that worked.
set.seed(123)
x <- stats::rnorm(50)
doit <- function(x)
{
x <- sample(x, replace = TRUE)
if(length(unique(x)) > 30) mean(x)
else stop("too few unique points")
}
## alternative 1
res <- lapply(1:100, function(i) try(doit(x), TRUE))
## alternative 2
## Not run: res <- vector("list", 100)
for(i in 1:100) res[[i]] <- try(doit(x), TRUE)
## End(Not run)
unlist(res[sapply(res, function(x) !inherits(x, "try-error"))])
也可以看看
options
用於設置錯誤處理程序並禁止打印錯誤消息; geterrmessage
用於檢索最後一條錯誤消息。底層tryCatch
提供了更靈活的捕獲和處理錯誤的方法。
tools
包中的assertCondition
相關且對於測試很有用。
相關用法
- R transform 轉換對象,例如 DataFrame
- R tracemem 對象的跟蹤複製
- R traceback 獲取並打印調用堆棧
- R trace 函數或方法調用的交互式跟蹤和調試
- R trimws 刪除前導/尾隨空格
- R taskCallback 添加或刪除頂級任務回調
- R toString 將 R 對象轉換為字符串或測試字符串
- R tilde 波形符運算符
- R textConnection 文本連接
- R t 矩陣轉置
- R table 交叉表和表格創建
- R tempfile 為臨時文件創建名稱
- R taskCallbackManager 創建R級任務回調管理器
- R typeof 對象的類型
- R taskCallbackNames 查詢當前內部頂級任務回調名稱
- R timezones 時區
- R tabulate 向量列表
- R tapply 對不規則數組應用函數
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Try an Expression Allowing Error Recovery。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。