捕获特定警告并忽略其他警告

时间:2016-05-04 16:04:41

标签: r try-catch

我正在调试一些代码,它会发出一些警告,但是当我收到一个特定的警告时,我正试图停止代码,这样我就可以查看环境了。

例如:

myfun <- function(){
  warning("The wrong warning")
  warning("The right warning")
  print("The end of the function")
}

tryCatch(myfun(),
         warning = function(w){
           if(grepl("right", w$message)){
             stop("I have you now")
           } else {
             message(w$message)
           }
         })

我想要发生的是功能停止在“正确的警告”,但是一旦收到第一个警告,捕获就会停止。我如何跳过那些不感兴趣的警告并停止那些我感兴趣的警告?

1 个答案:

答案 0 :(得分:4)

我相信withCallingHandlers就是你想要的:Disregarding simple warnings/errors in tryCatch()

withCallingHandlers(myfun(),
   warning = function(w){
     if(grepl("right", w$message)){
       stop("I have you now")
     } else {
       message(w$message)
     }
   })
相关问题