These constructors make it easy to create subclassed conditions. Conditions are objects that power the error system in R. They can also be used for passing messages to pre-established handlers. See vignette("conditions") for more information on how to use the condition system.

new_cnd(.type = NULL, ..., .msg = NULL)

cnd_error(.type = NULL, ..., .msg = NULL)

cnd_warning(.type = NULL, ..., .msg = NULL)

cnd_message(.type = NULL, ..., .msg = NULL)



The condition subclass.


Named data fields stored inside the condition object. These dots are evaluated with explicit splicing.


A default message to inform the user about the condition when it is signalled.


new_cnd() creates objects inheriting from condition. Conditions created with cnd_error(), cnd_warning() and cnd_message() inherit from error, warning or message.

See also

cnd_signal(), with_handlers().


# Create a condition inheriting from the s3 type "foo": cnd <- new_cnd("foo") # Signal the condition to potential handlers. This has no effect if no # handler is registered to deal with conditions of type "foo": cnd_signal(cnd)
# If a relevant handler is on the current evaluation stack, it will be # called by cnd_signal(): with_handlers(cnd_signal(cnd), foo = exiting(function(c) "caught!"))
#> [1] "caught!"
# Handlers can be thrown or executed inplace. See with_handlers() # documentation for more on this. # Note that merely signalling a condition inheriting of "error" is # not sufficient to stop a program: cnd_signal(cnd_error("my_error"))
#> Error:
# you need to use stop() to signal a critical condition that should # terminate the program if not handled: # stop(cnd_error("my_error"))