我已成功在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.
除了涉及XXX
和yyy
之外,输出变得一团糟。
如何只访问我抛出的错误消息,而不是前面的内容?我怎么能自己找到答案呢?
由于
答案 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(...)