我不明白如何捕捉错误

时间:2014-02-25 17:31:50

标签: r

我不明白如何发现错误。

例如我写了一个脚本:

morph_input = tryCatch(prepareMorphObjectFromFiles(InputConfig,InputGOI),
              error=stop("Please Start Over,your Data Sets or uploaded GOI are not suitable."))

我希望如果函数prepareMorphObjectFromFiles(InputConfig,InputGOI)中断,那么错误就会弹出。但即使功能没有中断,它也会一直弹出。

2 个答案:

答案 0 :(得分:4)

您应该将错误处理函数作为error中的tryCatch()参数传递。否则它确实将被评估。一个例子:

tryCatch({
   if (runif(1) > 0.8) stop("catch me if you can!")
   else "OK"
},
error=function(err) {
   # an error handler
   cat("An error occured.\n")
})

答案 1 :(得分:2)

@gagolews给出了最想要的东西。我喜欢只使用try,这有助于我对代码进行更线性的思考(即分步进行)。

out <- try({
   if (runif(1) > .7) stop("catch me if you can!")
   else "OK"
}, silent = TRUE)

if(inherits(out, "try-error")) message("went bad")