Provides a convenient wrapper to throw an exception when a condition is unmet.
This is similar to an assertion, but uses exceptions instead of ::abort(), and cannot be disabled.
Namespaces | |
drake | |
Macros | |
#define | DRAKE_THROW_UNLESS(condition) |
Evaluates condition and iff the value is false will throw an exception with a message showing at least the condition text, function name, file, and line. More... | |
#define DRAKE_THROW_UNLESS | ( | condition | ) |
Evaluates condition
and iff the value is false will throw an exception with a message showing at least the condition text, function name, file, and line.
The condition must not be a pointer, where we'd implicitly rely on its nullness. Instead, always write out "!= nullptr" to be precise.
Correct: DRAKE_THROW_UNLESS(foo != nullptr);
Incorrect: DRAKE_THROW_UNLESS(foo);
Because this macro is intended to provide a useful exception message to users, we should err on the side of extra detail about the failure. The meaning of "foo" isolated within error message text does not make it clear that a null pointer is the proximate cause of the problem.