If you would like to save the error message instead of suppressing it, you can use tryCatch(message=function(e)e, ...). -BIll On Tue, Nov 28, 2023 at 3:55?AM Adrian Dusa <dusa.adrian at unibuc.ro> wrote:> Once again, Ivan, many thanks. > Yes, that does solve it. > Best wishes, > Adrian > > On Tue, Nov 28, 2023 at 11:28?AM Ivan Krylov <krylov.r00t at gmail.com> > wrote: > > > ? Tue, 28 Nov 2023 10:46:45 +0100 > > Adrian Dusa <dusa.adrian at unibuc.ro> ?????: > > > > > tryCatch(requireNamespace("foobar"), error = function(e) e) > > > > I think you meant loadNamespace() (which throws errors), not > > requireNamespace() (which internally uses tryCatch(loadNamespace(...)) > > and may or may not print the error depending on the `quietly` argument). > > > > -- > > Best regards, > > Ivan > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >[[alternative HTML version deleted]]
Henrik Bengtsson
2023-Nov-28 18:42 UTC
[Rd] capture error messages from loading shared objects
Careful; tryCatch() on non-error conditions will break out of what's evaluated, e.g. res <- tryCatch({ cat("1\n") message("2") cat("3\n") 42 }, message = identity) will output '1' but not '3', because it returns as soon as the first message() is called. To "record" messages (same for warnings), use withCallingHandlers() instead, e.g. msgs <- list() res <- withCallingHandlers({ cat("1\n") message("2") cat("3\n") 42 }, message = function(m) { msgs <<- c(msgs, list(m)) invokeRestart("muffleMessage") }) This will output '1', muffle '2', output '3', and return 42, and 'msgs' holds> msgs[[1]] <simpleMessage in message("2"): 2 /Henrik On Tue, Nov 28, 2023 at 10:34?AM Bill Dunlap <williamwdunlap at gmail.com> wrote:> > If you would like to save the error message instead of suppressing it, you > can use tryCatch(message=function(e)e, ...). > > -BIll > > On Tue, Nov 28, 2023 at 3:55?AM Adrian Dusa <dusa.adrian at unibuc.ro> wrote: > > > Once again, Ivan, many thanks. > > Yes, that does solve it. > > Best wishes, > > Adrian > > > > On Tue, Nov 28, 2023 at 11:28?AM Ivan Krylov <krylov.r00t at gmail.com> > > wrote: > > > > > ? Tue, 28 Nov 2023 10:46:45 +0100 > > > Adrian Dusa <dusa.adrian at unibuc.ro> ?????: > > > > > > > tryCatch(requireNamespace("foobar"), error = function(e) e) > > > > > > I think you meant loadNamespace() (which throws errors), not > > > requireNamespace() (which internally uses tryCatch(loadNamespace(...)) > > > and may or may not print the error depending on the `quietly` argument). > > > > > > -- > > > Best regards, > > > Ivan > > > > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-devel at r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel