依序捕获并处理多个错误

时间:2018-08-01 14:57:47

标签: r error-handling

我有一个表达出多个错误的表达式:

stop("first")
stop("second")
stop("third")
print("success")

是否有一种方法可以使该表达式一直运行到最后(并尽可能存储所有错误)?

tryCatch的问题在于,它会在第一个已处理的条件下停止执行(因此,它将仅打印一次“存在错误”)。

tryCatch({
  stop("first")
  stop("second")
  stop("third")
  print("success")
}, error = function(e) print("There was an error"))

我了解到withCallingHandlers将捕获条件并继续执行,因此我尝试了类似的操作...

withCallingHandlers(
  {...},
  error = function(e) print("There was an error")
)

...但是,尽管这确实会打印出消息,但在第一个错误之后它也会失败,据我所知,这是因为默认的重新启动只是再次运行了当前行。

我认为我需要做的是编写一个自定义的重启,该重启仅跳过当前表达式并跳至下一个表达式,但是我对此却有些茫然。

(背景:基本上,我正在尝试复制testthat::test_that内部发生的事情,即使每个失败的期望都引发错误,所有期望都会在退出之前运行)。

0 个答案:

没有答案