Как распечатать фактическое сообщение об ошибке в R - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь вернуть любое фактическое сообщение об ошибке в функции R, отправить ей электронное письмо, чтобы уведомить пользователя, однако он печатает только настраиваемое сообщение в аргументе R. Есть ли способ отправить фактическое сообщение об ошибке по электронной почте?

Ниже приведен фиктивный сценарий, который я написал до сих пор:

mailme <- function(message){
  #function to send email
}

b<-function(){
  r <- NULL
  attempt <- 1
  while( is.null(r) && attempt <= 3 ) {
    attempt <- attempt + 1
    try({
      x<-2+3
      prin(x)})
  }
  stop("The error message")
}

a <- tryCatch({
  b()
}, error = function(e){
  mailme(e$message)
})
  

Фактическое возвращаемое сообщение об ошибке:

Error in prin(x) : could not find function "prin"

Однако сообщение об ошибке, которое я получаю по электронной почте:

The error message  #from the stop used in function b

Как мне вызвать фактическое сообщение об ошибке внутри остановки?

1 Ответ

0 голосов
/ 14 июля 2020

Возможно, я неправильно понял ваш вопрос, но мне кажется, что вы без необходимости усложняете ситуацию двумя tryCatch es. Почему бы просто не определить свою функцию, а затем вызвать ее из одного tryCatch. Более упрощенный пример:

# function that will always error
my_fun <- function() prin(x)

tryCatch({
    my_fun()
  }, error = function(e) {
    print(e$message) # replace with mailme(e$message)
})
# [1] "could not find function \"prin\""

Конечно, замените print на mailme в вашем фактическом коде.

...