Ответ
Следует использовать IllegalArgumentException. Это стандартное непроверяемое исключение (RuntimeException), которое ясно указывает на то, что переданный аргумент имеет некорректное или недопустимое значение с точки зрения логики метода.
Пример:
public void validateAndProcess(Order order) {
if (order == null) {
throw new IllegalArgumentException("Order cannot be null");
}
if (order.getTotalAmount().signum() <= 0) {
throw new IllegalArgumentException(
"Order total must be positive. Received: " + order.getTotalAmount()
);
}
// Дальнейшая обработка
}
Почему именно оно:
- Стандартное и понятное: Часть JDK, его семантика известна всем Java-разработчикам.
- Непроверяемое: Ошибка программиста или клиента API, не требует обязательного объявления в
throws. - Информативное: Позволяет передать детальное сообщение о причине ошибки.
Для более специфичных сценариев (например, «Заказ уже обработан») следует создавать собственные бизнес-исключения, наследуясь от RuntimeException.