При вызове функции R внутри моего веб-приложения я хотел бы перехватить трассировку стека при возникновении ошибки и представить ее пользователю для целей отладки. Что-то вроде вывода traceback()
в интерактивном сеансе. Однако traceback
, кажется, не работает, когда он вызывается внутри обработчика ошибок, он возвращает No traceback available
:
f <- function() {
g <- function() stop("test traceback")
g()
}
errhandler <- function(e){
stacktrace <- traceback()
unlist(stacktrace);
}
out <- tryCatch(f(), error=errhandler)
Есть ли способ программно поймать трассировку стека ошибки? т.е. получить вывод, который я получил бы при вызове traceback()
вручную после ошибки:
f()
traceback()