cnd_message() assembles an error message from three generics:
Methods for these generics must return a character vector. The
elements are combined into a single string with a newline
separator. Bullets syntax is supported, either through rlang (see
format_error_bullets()), or through cli if the condition has
use_cli_format set to
The default method for the error header returns the
of the condition object. The default methods for the body and
footer return the the
footer fields if any, or empty
character vectors otherwise.
cnd_message() is automatically called by the
for rlang errors, warnings, and messages. Error classes created
abort() only need to implement header, body or footer
methods. This provides a lot of flexibility for hierarchies of
error classes, for instance you could inherit the body of an error
message from a parent class while overriding the header and footer.
cnd_message(cnd) cnd_header(cnd, ...) cnd_body(cnd, ...) cnd_footer(cnd, ...)
A condition object.
Arguments passed to methods.
Sometimes the contents of an error message depends on the state of
your checking routine. In that case, it can be tricky to lazily
generate error messages with
cnd_body(): you have the choice
between overspecifying your error class hierarchies with one class
per state, or replicating the type-checking control flow within the
cnd_body() method. None of these options are ideal.
A better option is to define a
body field in your error object
containing a static string, a lambda-formula, or a
function with the same signature as
cnd_body(). This field
cnd_body() generic and makes it easy to generate an
error message tailored to the state in which the error was