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")
expr | Expression to be evaluated with a catching condition handler. |
---|---|
classes | A character vector of condition classes to catch. By default, catches all conditions. |
A condition if any was signalled, NULL
otherwise.
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]], ...) #> 19. pkgdown:::data_reference_topic(...) #> 20. pkgdown:::run_examples(...) #> 21. pkgdown:::highlight_examples(code, topic, env = env) #> 22. downlit::evaluate_and_highlight(...) #> 23. evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler) #> 24. evaluate:::evaluate_call(...) #> 34. [ base::eval(...) ] with 1 more call #> 36. rlang::catch_cnd(abort("an error")) #> 42. base::force(expr) catch_cnd(signal("my_condition", message = "a condition")) #> <my_condition: a condition>