The assert keyword is used in assert 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.
Syntax of assert statement
Syntax of an assert statement is as follow (short version):
assert expression1;
or (full version):
assert expression1 : expression2;
Where:
- expression1 must be a boolean expression.
- expression2 must return a value (must not return void).
-
- 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.
Enable assertion
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.
Assertion examples
The following simple program illustrates the short version of assert statement: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.
No comments:
Post a Comment