2014-12-01 13 views
0

我有一個從庫lib加載的功能Stop。然後用options(error = Stop)這個函數替換R中的默認錯誤處理程序。在這個函數中,我想獲得回溯信息,以便我可以顯示引發錯誤的調用。但是,sys.calls在自定義錯誤處理程序中似乎不起作用。它只返回一個元素,而不是一個調用,它是Stop的主體。這可能與R如何用Stop截取錯誤處理程序有關。此外,traceback也不在Stop內工作。有什麼方法可以在自定義錯誤處理程序中獲得正確的回溯?在R的自定義錯誤處理程序中獲取回溯

回答

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。你在做什麼不同?

+0

你說得對。這確實有用。我感到困惑,因爲最後一個元素是一個函數定義而不是一個調用。 – 2014-12-12 20:15:49

相關問題