基本上,尝试以下内容:
tryCatch(expr = {stop("stop message")},
error = function(e) {
cat(conditionMessage(e))
cat(as.character(expr))
})
期望输出类似于:"stop(\"stop message\")"
,但由于无法找到expr
而失败...任何方式在范围内打印expr
而无需执行以下操作?
expr <- eval('stop("stop message")')
tryCatch(expr = {expr},
error = function(e) {
cat(conditionMessage(e))
cat(as.character(expr))
})
答案 0 :(得分:1)
我不确定我是否真的推荐这个,但你可以走上调用堆栈找到tryCatch
调用并在那里提取参数。这是一个帮助函数,用于在调用堆栈中查找调用
findStackFun <- function(fun) {
for(cx in sys.calls()) {
if (deparse(cx[[1]]) == fun) {
return(cx)
}
}
return(NULL)
}
然后你可以运行
tryCatch(expr = {stop("stop message")},
error = function(e) {
cat(conditionMessage(e))
call <- findStackFun("tryCatch")
cat(deparse(call$expr))
})