【发布时间】:2016-06-21 20:34:34
【问题描述】:
我调用了其他 lib 函数,它进行计算并抛出警告消息。我尝试使用 tryCatch() 来捕获消息,但不知道如何保留计算值和警告消息。这是示例(简化)代码,我希望 mydiv 函数同时具有计算值和警告消息。现在 mydiv 调用将返回除法值或警告,但不能同时返回。
mydiv = function(x, y){
tryCatch({
# raise warning message
if (x > y)
warning("throw a warning")
# function calc result
x/y
},
warning = function(war) {
flag = paste("DIV Warning:", war$message)
return (flag)
},
error = function(err) {
flag = paste("DIV Err", err)
return (flag)
})
}
如果我调用 x = mydiv(2, 1) 那么 x 的值为 "DIV Warning: throw a warning";如果 x = mydiv(2, 4) 那么 x: [1] 0.5。 所以我的问题是:1.使用tryCatch:如果可能的话,如何返回计算值和警告信息; 2. 是否有更好的方法从函数中获取两个值。
【问题讨论】: