Как использовать option (error =) с пользовательской функцией и все же заставить скрипт прерваться (в R) - PullRequest
1 голос
/ 12 апреля 2019

Может ли кто-нибудь указать мне, как правильно использовать option(error = function(...){})?Я хочу записать ошибки в файл журнала, а затем завершить как обычно.В настоящее время я использую

  options(error = function(...) {
    #... write to logfile ...
    options(error = NULL)
    stop(geterrmessage())
  })

Но сброс параметра и повторный вызов stop() выглядит для меня как хак.Я также попробовал q("no", status = 1, runLast = FALSE) (как в документации stop()), но это не похоже на нормальное stop().Например, на сервере RStudio он завершает весь сеанс.

Мне нужно использовать option() вместо tryCatch(), потому что я хочу перехватить все возможные ошибки, возникающие в скрипте.Я запускаю свой сценарий с помощью задания cron и хочу получить запись по электронной почте / в журнале, как только сценарий завершится неудачей.

1 Ответ

0 голосов
/ 12 апреля 2019
Блок

A tryCatch, вероятно, будет лучшим вариантом для ситуаций такого типа.

tryCatch({
  #... main code to run ...

}, warning = function(w) {
  #... code to run if any warnings occur ...
  warning(w) # Show the warning

}, error = function(e) {
  #... write to log file ...
  stop(e) # Stop script and show error message. Delete this line if you do not want to stop script

}, finally = {
  #... code to run whether or not error occurs ...
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...