【发布时间】:2012-06-23 21:15:03
【问题描述】:
当我使用tryCatch 时,我可以定义一个错误处理程序并使用conditionCall 来确定导致错误的调用。例如,
tryCatch(
eval(parse(text="prnit('Hello')")),
error=function(e) {
cl <- conditionCall(e)
#...
})
我可以在 R 提示符下进行错误调用吗?到目前为止,我只找到了这个解决方案:
> err_hdl <- function() {
file1 <- tempfile("Rrawhist")
savehistory(file1)
rawhist <- readLines(file1)
unlink(file1)
cat("Error : ", tail(rawhist,1), "\n")
return(TRUE)
}
> options(error=err_hdl)
> prnit("Hello")
但我相信一定有更直接的方法..
感谢任何提示!
我放了一笔赏金。将接受第一个实现上述err_hdl 函数行为的答案,该答案没有独立于平台的文件 I/O。
编辑——上面的代码似乎只适用于 Windows。我正在寻找引发错误的输入。
【问题讨论】:
-
第一个例子没有错误。
-
您在第一个示例中的意思更像这样,对吧?
tryCatch( eval(parse(text=prnit('Hello'))), error=function(e) {conditionCall(e)}) -
@Josh O'Brien 是的,你是对的。改变了问题。
-
@kohske 问题是我不能将
tryCatch用于我在 R 控制台中输入的命令。我正在为交互式会话寻找自定义错误捕获机制。 -
FWIW,关于您的编辑,
err_hdl函数应该与平台无关,因为您的err_hdl函数的第一 4 行与history函数的第一 4 行相同。
标签: r error-handling