如何仅访问R中的异常错误消息

时间:2014-03-28 16:19:15

标签: r try-catch

我已成功在R

中设置了我的第一个例外

在我的函数中,我有一个很好的stop("Today the moon is blue. Can't continue.")

我现在用

来称呼它
tryCatch( {
  XXX(yyy)
}, error = function(err) {
   system(paste('echo "',err,'" | mail -s "BLUE MOON" "xxx@yyy.com"',sep=""))
})

问题在于错误的信息不是Today the moon is blue. Can't continue.,而是在它前面混淆了一些混淆,类似于Error in XXX(yyy) : Today the moon is blue. Can't continue.

除了涉及XXXyyy之外,输出变得一团糟。

如何只访问我抛出的错误消息,而不是前面的内容?我怎么能自己找到答案呢?

由于

2 个答案:

答案 0 :(得分:2)

您可以使用

 system(paste('echo "',err$message,'" | mail -s "BLUE MOON" "xxx@yyy.com"',sep=""))

条件有一条消息和一个内部call语言对象(如何触发错误)。要查看所有内容,请尝试print(str(err)),这样可以推断出err$message是正确的。

答案 1 :(得分:0)

我会这样做。根据此错误消息,您可以稍后捕获它并回显到控制台。

fun <- function(x) stop("Bad moon is rising.")
my.catch <- tryCatch(fun(x = 5), error = function(e) e)
my.catch
<simpleError in fun(x = 5): Bad moon is rising.>
if(grepl("Bad moon is rising.", my.catch)) system(...)