Build an error message from parts
cnd_message()
assembles an error message from three generics:
cnd_header()
cnd_body()
cnd_footer()
The default method for the error header returns the message
field
of the condition object. The default methods for the body and
footer return empty character vectors. In general, methods for
these generics should return a character vector. The elements are
combined into a single string with a newline separator.
cnd_message()
is automatically called by the conditionMessage()
for rlang errors. Error classes created with 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, ...)
cnd |
A condition object. |
... |
Arguments passed to methods. |
cnd_body()
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
overrides the cnd_body()
generic and makes it easy to generate an
error message tailored to the state in which the error was
constructed.
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.