错误后如何激活R taskcallback

Vin*_*der 6 r

我想知道如何在错误后进行回调.

我尝试过这个,但它不能用于错误:

addTaskCallback(
  function(expr, value, ok, visible) {
    print("ok")
    TRUE
  }
)
getTaskCallbackNames()

print(1) #ok 
ls() #ok
dont_exist() # the taskcallback isn't activated
Run Code Online (Sandbox Code Playgroud)

编辑:

得到它了!

if (!require(devtools)){install.packages("devtools")}
devtools::install_github("ThinkRstat/fcuk")
library(fcuk)
sl()
iri
view
mea
Run Code Online (Sandbox Code Playgroud)

Con*_*ncy 2

R 提供了一些方法来添加错误和警告处理程序。你可以使用类似的东西

.Internal(.addCondHands("error", 
                        list(error = function(e) {print("ok")}), 
                        .GlobalEnv, NULL, TRUE))
Run Code Online (Sandbox Code Playgroud)

添加错误回调函数。我没有找到太多这方面的文档,但您可以查看源代码withCallingHandlerstryCatch了解如何使用它。

编辑:

我还找到了一种在错误后进行回调的方法,但不是以纯 R 的方式。它依赖于Rstudio的错误回调机制:

如果你使用 Rstudio,你会发现一个全局选项“error”,Rstudio 使用它作为错误回调函数。您可以通过以下方式查看它:getOption("error")并像这样更改它:

f <- function(){
    print("ok")
}

options(error = f)
Run Code Online (Sandbox Code Playgroud)

如果你想收集最新的错误消息,你可以使用geterrmessage()R 中内置的 。