Working with Chromium codebase I got used to macros like CHECK(condition);
, DCHECK(contidtion)
and NOTREACHED;
. They introduce assertions (usually preconditions) to the code and allow to terminate program with some info in a log, an in debug build DCHECK
and NOTREACHED
would also stop debugger to investigate the case. First one is active only in release mode and latter two only in debug - when "unactive" they would be replaced by an empty macro and not cause any overhead.
Is there some library in Java that allows such thing? I know that I could create some static method/object and depending on configuration swap configuration but I cannot see the way to avoid creating overhead. Besides, I wouldn't want to reinvent the wheel.
You can use the
assert
keyword:which is equivalent to
Asserts are disabled unless the
-ea
switch is given when starting the JVM and will have close to 0 overhead when disabled.The equivalent to
NOTREACHED
would beassert false;
Related: What does the "assert" keyword do?