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
assertkeyword:which is equivalent to
Asserts are disabled unless the
-easwitch is given when starting the JVM and will have close to 0 overhead when disabled.The equivalent to
NOTREACHEDwould beassert false;Related: What does the "assert" keyword do?