Introduce Java assert Keyword and give examples
The assert
keyword in Java is used as a debugging aid that tests a boolean expression. When an assertion is evaluated to true
, the program continues to execute normally. However, if the assertion evaluates to false
, an AssertionError
is thrown, which can help identify bugs in the code during development.
Assertions are typically used to check for conditions that should never occur in a correctly functioning program. They are not meant to replace regular error handling but rather to catch programming errors during development.
By default, assertions are disabled in Java. To enable assertions, you need to run the Java Virtual Machine (JVM) with the -ea
(or -enableassertions
) option. For example:
java -ea MyClass
The basic syntax of an assertion is:
assert expression1;
or
assert expression1 : expression2;
expression1
is a boolean expression that you want to test.expression2
is an optional expression that provides a message if the assertion fails.public class AssertExample {
public static void main(String[] args) {
int value = 5;
assert value > 0 : "Value must be positive";
System.out.println("Value is: " + value);
}
}
In this example, the assertion checks if value
is greater than 0. If it is not, an AssertionError
will be thrown with the message "Value must be positive".
public class AssertWithMessage {
public static void main(String[] args) {
int number = -10;
assert number >= 0 : "Number must be non-negative";
System.out.println("Number is: " + number);
}
}
If you run this code with assertions enabled, it will throw an AssertionError
because number
is negative, and the message "Number must be non-negative" will be displayed.
public class AssertInMethod {
public static void main(String[] args) {
int result = divide(10, 2);
System.out.println("Result: " + result);
// This will trigger an assertion error
result = divide(10, 0);
System.out.println("Result: " + result);
}
public static int divide(int a, int b) {
assert b != 0 : "Denominator must not be zero";
return a / b;
}
}
In this example, the divide
method uses an assertion to ensure that the denominator b
is not zero. If you try to divide by zero, it will throw an AssertionError
.
Assertions are a powerful tool for debugging and ensuring that certain conditions hold true during the execution of a program. They should be used judiciously and are typically removed or disabled in production code. Remember that assertions are not a substitute for proper error handling and should not be used for validating user input or handling runtime exceptions.