在R中的自定义错误处理程序中获取回溯

时间:2014-12-01 21:50:17

标签: r error-handling

我从库Stop加载了一个函数lib。然后,我使用options(error = Stop)使用此函数替换R中的默认错误处理程序。在这个函数中,我想得到回溯,以便我可以显示导致错误被抛出的调用。但是,sys.calls似乎不能在自定义错误处理程序中工作。它只返回一个元素,它是Stop的主体,而不是一个调用。这可能与R如何使用Stop拦截错误处理程序有关。此外,tracebackStop内也不起作用。有没有什么方法可以在自定义错误处理程序中获得正确的回溯?

1 个答案:

答案 0 :(得分:1)

这对我有用:

> fun <- function(x) stop('hello')
> Stop <- function() print(sys.calls())
> options(error=Stop)
> fun(1)
Error in fun(1) : hello
[[1]]
fun(1)

[[2]]
stop("hello")

[[3]]
(function () 
print(sys.calls()))()

这是在R 3.1.2。你在做什么不同?