Я бы выбросил исключение IllegalArgumentException. Обязательно задокументируйте это в Javadocs.
/**
* returns the sum of this vector and another vector.
* @param other the second summand. It must have the same
* length as this vector.
* @return the sum of both vectors as a new vector.
* @throws IllegalArgumentException if the two vectors do not have
* the same length (i.e. come from different vector spaces).
*/
public Vector plus(Vector other) {
if (this.length != other.length) {
throw new IllegalArgumentException("different lengths: " + this.length + "!=" + other.length);
}
...
}
ArithmeticException
было бы еще одной возможностью, но я думаю, что `IllegalArgumentException подходит ему лучше.
Проверка с помощью assert
обычно отключена и должна быть включена явно, часто только во время тестирования приложения, а не в продуктивном использовании. Таким образом, это подходит только для проверки в закрытых методах, которые всегда должны получать правильные параметры (обеспечивается проверками в вызывающих методах).