@Beta @GwtCompatible public final class Verify extends Object
Static convenience methods that serve the same purpose as Java language assertions, except that they are always enabled. These methods should be used instead of Java assertions whenever there is a chance the check may fail “in real life”. Example:
Bill bill = remoteService.getLastUnpaidBill();
// In case bug 12345 happens again we'd rather just die
Verify.verify(bill.status() == Status.UNPAID,
"Unexpected bill status: %s", bill.status());
Note: In some cases the differences explained below can be subtle. When it’s unclear which approach to use, don’t worry too much about it; just pick something that seems reasonable and it will be fine.
Preconditions
class instead.
if/throw
(as illustrated below) is always acceptable; we still recommend
using our VerifyException
exception type. Throwing a plain RuntimeException
is frowned upon.
Objects.requireNonNull(Object)
is generally discouraged, since
verifyNotNull(Object)
and Preconditions.checkNotNull(Object)
perform the
same function with more clarity.
Remember that parameter values for message construction must all be computed eagerly, and autoboxing and varargs array creation may happen as well, even when the verification succeeds and the message ends up unneeded. Performance-sensitive verification checks should continue to use usual form:
Bill bill = remoteService.getLastUnpaidBill();
if (bill.status() != Status.UNPAID) {
throw new VerifyException("Unexpected bill status: " + bill.status());
}
%s
is supportedAs with Preconditions
error message template strings, only the "%s"
specifier is supported, not the full range of Formatter
specifiers. However, note that if the number of arguments does not match the number of occurrences of "%s"
in the format string, Verify
will still behave as expected, and will still include all argument values in the error message; the message will simply not be formatted exactly as intended.
See Conditional failures explained in the Guava User Guide for advice on when this class should be used.
Modifier and Type | Method and Description |
---|---|
static void |
verify(boolean expression)
Ensures that
expression is true , throwing a VerifyException with no message otherwise. |
static void |
verify(boolean expression,
String errorMessageTemplate,
Object... errorMessageArgs)
Ensures that
expression is true , throwing a VerifyException with a custom message otherwise. |
static <T> T |
verifyNotNull(T reference)
Ensures that
reference is non-null, throwing a VerifyException with a default message otherwise. |
static <T> T |
verifyNotNull(T reference,
String errorMessageTemplate,
Object... errorMessageArgs)
Ensures that
reference is non-null, throwing a VerifyException with a custom message otherwise. |
public static void verify(boolean expression)
Ensures that expression
is true
, throwing a VerifyException
with no message otherwise.
VerifyException
- if expression
is false
public static void verify(boolean expression, @Nullable String errorMessageTemplate, @Nullable Object... errorMessageArgs)
Ensures that expression
is true
, throwing a VerifyException
with a custom message otherwise.
expression
- a boolean expressionerrorMessageTemplate
- a template for the exception message should the check fail. The message is formed by replacing each %s
placeholder in the template with an argument. These are matched by position - the first %s
gets errorMessageArgs[0]
, etc. Unmatched arguments will be appended to the formatted message in square braces. Unmatched placeholders will be left as-is.errorMessageArgs
- the arguments to be substituted into the message template. Arguments are converted to strings using String.valueOf(Object)
.VerifyException
- if expression
is false
public static <T> T verifyNotNull(@Nullable T reference)
Ensures that reference
is non-null, throwing a VerifyException
with a default message otherwise.
reference
, guaranteed to be non-null, for convenienceVerifyException
- if reference
is null
public static <T> T verifyNotNull(@Nullable T reference, @Nullable String errorMessageTemplate, @Nullable Object... errorMessageArgs)
Ensures that reference
is non-null, throwing a VerifyException
with a custom message otherwise.
errorMessageTemplate
- a template for the exception message should the check fail. The message is formed by replacing each %s
placeholder in the template with an argument. These are matched by position - the first %s
gets errorMessageArgs[0]
, etc. Unmatched arguments will be appended to the formatted message in square braces. Unmatched placeholders will be left as-is.errorMessageArgs
- the arguments to be substituted into the message template. Arguments are converted to strings using String.valueOf(Object)
.reference
, guaranteed to be non-null, for convenienceVerifyException
- if reference
is null