Класс AssertionError
Класс AssertionError наследуется от класса Error и представляет собой ошибку,
которая возникает при неудачной проверке утверждения с помощью ключевого слова assert.
Утверждения используются для проверки предположений о состоянии программы во время разработки.
Если утверждение оказывается ложным, виртуальная машина Java выбрасывает исключение AssertionError.
В первый параметр конструктора можно передать сообщение об ошибке, во второй - причину (cause),
а также можно передать логическое значение или объект для детализации ошибки.
Синтаксис
// Проверка утверждения
assert condition : message;
// Конструкторы класса
new AssertionError()
new AssertionError(Object detailMessage)
new AssertionError(boolean detailMessage)
new AssertionError(char detailMessage)
new AssertionError(int detailMessage)
new AssertionError(long detailMessage)
new AssertionError(float detailMessage)
new AssertionError(double detailMessage)
new AssertionError(String message, Throwable cause)
Пример
Давайте рассмотрим пример, в котором утверждение оказывается ложным, что приводит к выбросу ошибки AssertionError:
public class Main
{
public static void main(String[] args)
{
int a = 5;
int b = 10;
assert a > b : "a must be greater than b";
System.out.println("Program continues");
}
}
Результат выполнения кода (при включенных утверждениях с флагом -ea):
Exception in thread "main" java.lang.AssertionError: a must be greater than b
at Main.main(Main.java:8)
Пример
Давайте создадим объект AssertionError вручную и выведем его сообщение:
public class Main
{
public static void main(String[] args)
{
try
{
throw new AssertionError("Custom assertion error");
}
catch (AssertionError e)
{
System.out.println(e.getMessage());
}
}
}
Результат выполнения кода:
"Custom assertion error"
Пример
Давайте создадим ошибку AssertionError с указанием причины:
public class Main
{
public static void main(String[] args)
{
try
{
Exception cause = new RuntimeException("Root cause");
throw new AssertionError("Assertion failed", cause);
}
catch (AssertionError e)
{
System.out.println(e.getMessage());
System.out.println(e.getCause().getMessage());
}
}
}
Результат выполнения кода:
"Assertion failed"
"Root cause"