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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。