Ответ
Assertions (утверждения) в Java — это механизм проверки инвариантов (логических условий) во время выполнения программы. Они используются для отладки и валидации внутренних предположений о состоянии кода, которые должны быть всегда истинны.
Ключевые аспекты:
- Цель: Обнаружение логических ошибок на этапе разработки и тестирования. Не предназначены для обработки ошибок времени выполнения или валидации пользовательского ввода в production-коде.
- Управление: Утверждения по умолчанию отключены в JVM. Для их активации необходимо передать флаг
-ea(или-enableassertions). Флаг-daотключает их. - Поведение: Если утверждение (
assert) ложно, JVM генерирует ошибкуAssertionError, что обычно приводит к аварийному завершению программы.
Синтаксис:
assert условие; // Простая форма
assert условие : выражение; // Форма с детализирующим сообщением (выражение вычисляется в строку)
Пример:
public class Account {
private double balance;
public void withdraw(double amount) {
// Внутренняя проверка: сумма снятия должна быть положительной
assert amount > 0 : "Сумма снятия должна быть положительной: " + amount;
// Проверка бизнес-инварианта: баланс не может стать отрицательным
assert (balance - amount) >= 0 : "Недостаточно средств. Баланс: " + balance;
balance -= amount;
}
}
// Запуск: java -ea Account
Когда использовать: Для проверки внутренних инвариантов методов, условий, которые «никогда не должны нарушаться», и в модульных тестах как альтернатива или дополнение к фреймворкам вроде JUnit.