Java assert keyword example
- Details
- Written by Nam Ha Minh
- Last Updated on 18 August 2019   |   Print Email
The assert keyword is used in assertion statement which is a feature of the Java programming language since Java 1.4. Assertion enables developers to test assumptions in their programs as a way to defect and fix bugs.
1. Syntax of assert statement
Syntax of an assert statement is as follow (short version):
assert expression1;
or (full version):
assertexpression1 : expression2;
Where:
- expression1 must be a booleanexpression.
- expression2 must return a value (must not return void).
The assert statement is working as follows:
- If assertion is enabled, then the assert statement will be evaluated. Otherwise, it does not get executed.
- If expression1 is evaluated to false, an AssertionError error is thrown which causes the program stops immediately. And depending on existence of expression2:
- If expression2 does not exist, then the AssertionError is thrown with no detail error message.
- If expression2 does exist, then a String representation of expression2’s return value is used as detail error message.
- If expression1 is evaluate to true, then the program continues normally.
2. Enable assertion in Java
By default, assertion is disabled at runtime. To enable assertion, specify the switch –enableassertions or -ea at command line of java program. For example, to enable assertion for the program called CarManager:
java –enableassertions CarManager
or this for short:
java –ea CarManager
Assertion can be enabled or disable specifically for named classes or packages. For more information on how to enable and disable assertion, read this article.
3. Java Assertion examples
The following simple program illustrates the short version of assertstatement:
public class AssertionExample { public static void main(String[] args) { // get a number in the first argument int number = Integer.parseInt(args[0]); assert number <= 10; // stops if number > 10 System.out.println("Pass"); } }
When running the program above with this command:
java -ea AssertionExample 15
A java.lang.AssertionError error will be thrown:
Exception in thread "main" java.lang.AssertionError
at AssertionExample.main(AssertionExample.java:6)
But the program will continue and print out “Pass” if we pass a number less than 10, in this command:
java -ea AssertionExample 8
And the following example is using the full version of assert statement:
public class AssertionExample2 { public static void main(String[] args) { int argCount = args.length; assert argCount == 5 : "The number of arguments must be 5"; System.out.println("OK"); } }
When running the program above with this command:
java -ea AssertionExample2 1 2 3 4
it will throw this error:
Exception in thread "main" java.lang.AssertionError: The number of arguments must be 5
at AssertionExample2.main(AssertionExample2.java:6)
Generally, assertion is enabled during development time to defect and fix bugs, and is disabled at deployment or production to increase performance.
See all keywords in Java.
Related Topics:
Other Recommended Tutorials:
- 9 Rules about Constructors in Java
- 12 Rules and Examples About Inheritance in Java
- 12 Rules of Overriding in Java You Should Know
- 10 Java Core Best Practices Every Java Programmer Should Know
- Understand Interfaces in Java
- Understand how variables are passed in Java
- Understand encapsulation in Java
Comments
This was helpful. Thank you. You really mean the word "detect" instead of "defect", I think.
Carol Clark
can u give the example of second version of assert i.e
assert exp1: exp2;