[Rd] capturing multiple warnings in tryCatch()

Simon Urbanek @|mon@urb@nek @end|ng |rom R-project@org
Thu Dec 2 22:14:28 CET 2021


Adapted from demo(error.catching):

> W=list()
> withCallingHandlers(foo(), warning=function(w) { W <<- c(W, list(w)); invokeRestart("muffleWarning") })
> str(W)
List of 2
 $ :List of 2
  ..$ message: chr "warning 1"
  ..$ call   : language foo()
  ..- attr(*, "class")= chr [1:3] "simpleWarning" "warning" "condition"
 $ :List of 2
  ..$ message: chr "warning 2"
  ..$ call   : language foo()
  ..- attr(*, "class")= chr [1:3] "simpleWarning" "warning" "condition"

Cheers,
Simon


> On Dec 3, 2021, at 10:02 AM, Fox, John <jfox using mcmaster.ca> wrote:
> 
> Dear R-devel list members,
> 
> Is it possible to capture more than one warning message using tryCatch()? The answer may be in ?conditions, but, if it is, I can't locate it.
> 
> For example, in the following only the first warning message is captured and reported:
> 
>> foo <- function(){
> +   warning("warning 1")
> +   warning("warning 2")
> + }
> 
>> foo()
> Warning messages:
> 1: In foo() : warning 1
> 2: In foo() : warning 2
> 
>> bar <- function(){
> +   tryCatch(foo(), warning=function(w) print(w))
> + }
> 
>> bar()
> <simpleWarning in foo(): warning 1>
> 
> Is there a way to capture "warning 2" as well?
> 
> Any help would be appreciated.
> 
> John
> 
> -- 
> John Fox, Professor Emeritus
> McMaster University
> Hamilton, Ontario, Canada
> Web: http://socserv.mcmaster.ca/jfox/
> 
> 
> 
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 



More information about the R-devel mailing list