在 R 中使用 try 与 TryCatch

问题描述 投票:0回答:1

我的R代码如下

错误 = 0

for(i in c(1:100)){

 tryCatch(expr = {
    API Call
  }, error = {errors=errors+1}, finally = {})

  further code
}

该代码的目的是即使 API 调用失败也能继续执行并计算发生错误的次数。 但我发现,如果迭代中 API 调用出现错误,则不会执行进一步迭代的代码。 如果我使用 try(),那么我将无法计算错误数 请提出解决方案

r try-catch try-catch-finally
1个回答
0
投票

error=
tryCatch
参数应该是一个函数。如果您在
errors <- 0
循环之前预实例化
for
,有几个选项:

我的首选是捕获并检查它是否继承

"error"

errors <- 0L
for (...) {
  res <- tryCatch({
    ...API call...
  },
    error = function(e) e)
  if (inherits(res, "error")) {
    errors <- errors + 1L
  } else {
    something else here
  }
}

尽管我更喜欢这样的原因可能并不主要是主观的。另一种方式是更内部的:

errors <- 0L
for (...) {
  res <- tryCatch({
    ...API call...
  },
    error = function(e) { errors <<- errors + 1L; })
  something else here
}
© www.soinside.com 2019 - 2024. All rights reserved.