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