R 记录警告并继续执行

mzm*_*mzm 5 r try-catch

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

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

han*_*ler 3

不确定这是否是最惯用的解决方案,但在几乎相同的情况下使用tryCatch和的组合对我来说很有效。withCallingHandlers

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

tryCatch(
    withCallingHandlers(doSomething(), warning = function(w) logWarning(w)),
    error = function(e) logError(e)
)
Run Code Online (Sandbox Code Playgroud)

感谢评论中的尼古拉提供的提示withCallingHandlers