Дополнительное предупреждающее сообщение возвращает ошибку вместо предупреждения - PullRequest
0 голосов
/ 10 октября 2018

У меня есть две функции: f_, выдающая ошибку, и f, выдающая предупреждение перед вызовом f_.

f_ <- function() stop()
f <- function() {
  warning()
  f_()
}

Поскольку у меня есть предупреждение перед ошибкой, R выдает «дополнительные предупреждающие сообщения», но сообщение в этом предупреждении не мое f предупреждение, а ошибка, выданная в f_, называемая 2-йвремя:

> f()
Error in f_() : 
In addition: Warning message:
In f() :
  Error in f_() :

Кажется, что работает, как ожидалось, если ошибка возникает в той же функции или встроенной функции.

f <- function() {
  warning()
  stop()
}
> f()
Error in f() : 
In addition: Warning message:
In f() : 

Может кто-нибудь помочь мне понять, что происходиттам ?Спасибо за любую помощь.Я использую R версии 3.3.2 на x86_64-w64-mingw32, используя RStudio.

1 Ответ

0 голосов
/ 10 октября 2018

Я думаю, что это вызвано инспектором ошибок Rstudio.При обнаружении ошибки Rstudio отображает возможность трассировки и отладки.Я считаю, что это источник путаницы (включая мою собственную).«Вторая» ошибка - это просто функция в Rstudio, которая помогает в отладке, как показано ниже.Обратите внимание на две кнопки справа, позволяющие «показывать трассировку» и «перезапустить с отладкой».

В Rstudio enter image description here

Как вы можете видеть ниже, если вы запускаете R в терминале, этой «дополнительной» ошибки нет.

В терминале enter image description here

В ваших глобальных настройках в Rstudio на вкладке Общие вы можете отключить использование обработчика ошибок отладки.Вы также можете сделать это в Debug -> On Error.В этом случае Rstudio не будет отображать «дополнительное» сообщение.

Редактировать: После дальнейших исследований, означает что-то странное.Ниже я попытался сделать сообщение об ошибке и предупреждение более информативным со следующими наблюдениями:

  • Вызов f() много раз подряд, мне не совсем понятно, когда инспектор ошибоки когда он не появляется.
  • Когда инспектор ошибок появляется , предупреждающее сообщение не отображается.Когда инспектор ошибок не появляется, отображается предупреждающее сообщение.

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...