Assertions in Java - GeeksforGeeks

24 Jan, 2022
An assertion allows testing the correctness of any assumptions that have been made in the program. An assertion is achieved using the assert statement in Java. While executing assertion, it is believed to be true. If it fails, JVM throws an error named AssertionError. It is mainly used for testing purposes during development. 
The assert statement is used with a Boolean expression and can be written in two different ways.
First way: 
assert expression;
Second way:  
assert expression1 : expression2;
Example:
Java
// Java program to demonstrate syntax of assertionimport java.util.Scanner; class Test {    public static void main(String args[])    {        int value = 15;        assert value >= 20 : " Underweight";        System.out.println("value is " + value);    }}
value is 15
Output:  
Exception in thread "main" java.lang.AssertionError: Underweight
Enabling Assertions  
By default, assertions are disabled. We need to run the code as given. The syntax for enabling assertion statement in Java source code is: 
java –ea Test
Or 
java –enableassertions Test
Here, Test is the file name.
Disabling Assertions
The syntax for disabling assertions in java is: 
java –da Test
Or  
java –disableassertions Test
Here, Test is the file name.
Why use Assertions 
Wherever a programmer wants to see if his/her assumptions are wrong or not. 
To make sure that an unreachable-looking code is actually unreachable.
To make sure that assumptions written in comments are right.
if ((x & 1) == 1) {

}
else // x must be even
{
    assert (x % 2 == 0);
}
To make sure the default switch case is not reached.
To check the object’s state.
At the beginning of the method
After method invocation.
Assertion Vs Normal Exception Handling
Assertions are mainly used to check logically impossible situations. For example, they can be used to check the state a code expects before it starts running or the state after it finishes running. Unlike normal exception/error handling, assertions are generally disabled at run-time. 
Where to use Assertions  
Arguments to private methods. Private arguments are provided by the developer’s code only and the developer may want to check his/her assumptions about arguments.
Conditional cases.
Conditions at the beginning of any method.
Where not to use Assertions  
Assertions should not be used to replace error messages
Assertions should not be used to check arguments in the public methods as they may be provided by the user. Error handling should be used to handle errors provided by users.
Assertions should not be used on command line arguments.
Example:
Java
// Java program to demonstrate assertion in Javapublic class Example {    public static void main(String[] args)    {        int age = 14;        assert age <= 18 : "Cannot Vote";        System.out.println("The voter's age is " + age);    }}
The voter's age is 14
This article is contributed by Rahul Aggarwal. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
nishkarshgandhi
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Object Oriented Programming (OOPs) Concept in Java
HashMap in Java with Examples
Interfaces in Java
How to iterate any Map in Java
ArrayList in Java
Initialize an ArrayList in Java
Stack Class in Java
Multidimensional Arrays in Java
Singleton Class in Java
Set in Java