r - R中的tryCatch block ,返回变量

标签 r error-handling try-catch

因此,我试图了解R中tryCatch的范围和功能。

下一行:

arima(rep(1,3), order = c(1,0,0))

生成警告和错误,但是在tryCatch块中,仅警告函数返回值。如何获得警告和错误的返回值?
tryTest = tryCatch(
  {
    arima(rep(1,3), order = c(1,0,0))
  }, 
  warning = function(w) {

    print('this is warning')
    print(w)
    return('return string from warning')
  },
  error = function(e) {
    print('this is error')
    print(e)
    return('return string from error')
  },
  finally = {}
)

print(tryTest)

仅产生:
 "return string from warning"

最佳答案

R中的tryCatch允许您在出错时为变量分配一个值。这是两个最小的示例:

my_logo <- tryCatch(
{
  my_logo <- RCurl::getURLContent("https://invalid.website")
},
error = function(cond){
  my_logo <- "there is no image"
},
finally = {
  #pass
})

> my_logo
[1] "there is no image"

my_var <- tryCatch(
{
  my_var <- "a"/1
},
error = function(cond){
  my_var <- "foo"
},
finally = {
  #pass
})

> my_var
[1] "foo"

同样,您可以知道一个警告值。您不应编写tryCatch语句,以使其可能同时遇到错误和警告。我什至不确定这是否可行。

编辑:为了完整性,我添加了一个警告示例:
my_var <- tryCatch(
{
  warning()
  my_var <- "a"/1
},
warning = function(cond){
  print("There was a warning")
  return("bar")
},
error = function(cond){
  my_var <- "foo"
  print("This message will not be printed.")
},
finally = {
  #pass
})
[1] "There was a warning"
> my_var
[1] "bar"

关于r - R中的tryCatch block ,返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48391287/

相关文章:

mysql - R Shiny 中的selectInput

error-handling - 如何跟踪错误结果的原因?

vba - 如何阻止对Application.Quit的调用导致弹出框?

python - 如果没有足够的输入,如何遍历文件并引发自定义异常?

java - Java Try/Catch语句异常类型

使用 dplyr 删除所有变量均为 NA 的行

r - 在基本 R 图形中,是否可以找到添加的矩形的精确位置?

用中位数替换 R 中所有变量的缺失值

javascript - Bluebird(或其他 Promise 库)保留 Promise 错误堆栈跟踪

java - try catch 将名称拆分为第一个和最后一个的异常