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