Можно создать дубликат:
When to choose checked and unchecked exceptionsзарегистрированный или незарегистрированный Исключение
Здравствуйте!
Итак, я все еще чувствую себя комфортно, когда бросаю проверенное или неконтролируемое исключение. Я хотел бы знать, что думают другие является наиболее подходящим в данном случае:
class Correlation<T>
{
private final T object1, object2;
private final double correlationCoefficient;
public Correlation(T object1, T object2, double correlationCoefficient)
{
if(Math.abs(correlationCoefficient) > 1.0 || (object1.equals(object2) && correlationCoefficient != 1.0))
throw new IllegalArgumentException();
this.object1 = object1;
this.object2 = object2;
this.correlationCoefficient = correlationCoefficient;
}
}
Таким образом, в этом случае, я хотел бы бросить исключение во время выполнения, потому что я не могу легко восстановить из ситуации, когда пользователь переходит в плохие данные. Я хотел бы заранее указать, что я не контролирую передаваемые данные. Если бы я мог, я бы создал интерфейс, который гарантирует, что условие в конструкторе истинно. Однако это класс удобства для корреляций, которые уже были рассчитаны, поэтому я должен доверять тому, что пользователь предоставляет точную информацию.
Хорошо, дайте мне знать, что вы все думаете!
Я бы направил вас на http://stackoverflow.com/questions/27578/when-to-choose-checked-and-unchecked-exceptions –
Ваше использование исключения IllegalArgumentException (исключение во время выполнения) действительно, поскольку параметры являются незаконными (за ожидания конструктора (который должен быть документирован в JavaDocs)). –