This is a small wrapper around tryCatch() that captures any condition signalled while evaluating its argument. It is useful for situations where you expect a specific condition to be signalled, for debugging, and for unit testing.

catch_cnd(expr, classes = "condition")

Arguments

expr

Expression to be evaluated with a catching condition handler.

classes

A character vector of condition classes to catch. By default, catches all conditions.

Value

A condition if any was signalled, NULL otherwise.

Examples

catch_cnd(10)
#> NULL
catch_cnd(abort("an error"))
#> <error/rlang_error> #> an error #> Backtrace: #> 1. base::tryCatch(...) #> 13. pkgdown::build_site(...) #> 14. pkgdown:::build_site_local(...) #> 15. pkgdown::build_reference(...) #> 16. purrr::map(...) #> 17. pkgdown:::.f(.x[[i]], ...) #> 18. pkgdown:::data_reference_topic(...) #> 19. pkgdown:::run_examples(...) #> 20. pkgdown:::highlight_examples(code, topic, env = env) #> 21. evaluate::evaluate(x, child_env(env), new_device = TRUE) #> 22. evaluate:::evaluate_call(...) #> 32. [ base::eval(...) ] with 1 more call #> 34. rlang::catch_cnd(abort("an error")) #> 40. base::force(expr)
catch_cnd(cnd_signal("my_condition", .msg = "a condition"))
#> <simpleError in cnd_signal("my_condition", .msg = "a condition"): unused argument (.msg = "a condition")>