【发布时间】:2016-05-01 11:18:07
【问题描述】:
我可以使用.Last.value得到最后计算的值
2 + 2
## [1] 4
.Last.value
## [1] 4
我可以使用last.warning 访问最新的警告。
warning("!!!")
## Warning message:
## !!!
last.warning
## $`!!!`
## NULL
我可以使用geterrmessage()获取最新错误消息的文本
stop("!!!")
## Error: !!!
geterrmessage()
## [1] "Error: !!!\n"
如果我事先知道可能会引发错误,我可以使用tryCatch 返回错误对象。
tryCatch(stop("!!!"), error = identity)
## <simpleError in doTryCatch(return(expr), name, parentenv, handler): !!!>
在抛出最后一个错误后,如何将其检索为对象?
例如,如果我输入
stop("!!!")
然后我希望能够输入getlasterror() 或类似的内容并检索simpleError 对象。
【问题讨论】:
-
我想知道这是不是
traceback()的意思? -
@DavidArenburg 好主意,但似乎
traceback()和底层baseenv()$.Traceback仅将错误消息的调用堆栈存储为字符串对。所以我只得到"stop(\"!!!\")"而不是错误对象。 -
那么你想要的输出是什么?
-
我想要
simpleError对象,就像您通过运行tryCatch(stop("!!!"), error = identity)得到的一样,除了我想在已经抛出错误之后检索它。 -
嗯......也许像
tryCatch(eval(parse(text = traceback())), error = identity)这样的黑客?
标签: r error-handling