Simon's suggestion with withCallingHandlers() is the correct way. Also, note that if you use tryCatch() to catch warnings, you're *interrupting* the evaluation of the expression of interest, e.g.
> res <- tryCatch({ message("hey"); warning("boom"); message("there"); 42 }, > warning = function(w) { message("Warning caught: ", conditionMessage(w)); > 3.14 }) hey Warning caught: boom > res [1] 3.14 Note how it never completes your expression. /Henrik On Thu, Dec 2, 2021 at 1:14 PM Simon Urbanek <simon.urba...@r-project.org> wrote: > > > 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 <j...@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@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel