【问题标题】:R Log warnings and continue executionR 记录警告并继续执行
【发布时间】:2016-10-16 15:00:07
【问题描述】:

我有一个包含在 tryCatch 语句中的 R 代码块。该块中的任何行都可能引发警告或错误。当被捕获时,我有警告和错误的处理程序,它们在两种情况下都执行日志记录,并在错误情况下退出处理。

但在警告的情况下,我只想记录警告,并继续正常执行。目前,当警告被捕获时,它会被记录下来,但执行也会停止。有没有一种简单的方法可以实现此功能?

【问题讨论】:

  • 你可以看看try和有用的关联测试inherits(x, "try-error")
  • 使用withCallingHandlers 而不是tryCatch

标签: r try-catch


【解决方案1】:

不确定这是否是最惯用的解决方案,但在几乎相同的情况下使用 tryCatchwithCallingHandlers 的组合对我有用。

我用withCallingHandlers 包装对我的函数的调用,提供一个处理警告的函数;该函数的执行将在之后继续。我将所有 那个 包装在 tryCatch 中,提供一个处理错误的函数。

tryCatch(
    withCallingHandlers(doSomething(), warning = function(w) logWarning(w)),
    error = function(e) logError(e)
)

感谢 cmets 中的 nicola 提供withCallingHandlers 提示。

【讨论】:

    猜你喜欢
    • 2019-06-12
    • 2023-01-25
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多