Я приехал, чтобы полагать, что, как правило, "детали реализации" не являются деталями (в том смысле, что много проблем возникают, когда Вы рассматриваете некоторые определенные проблемы реализации как простые детали, которые могли быть игнорированы как мелочи с "архитектурной" точки зрения)
Вы не должны , а генерировать исключение ArithmeticException. Поскольку ошибка находится в предоставленных аргументах, вызовите исключение IllegalArgumentException
. Как сказано в документации :
Брошено, чтобы указать, что методу был передан недопустимый или несоответствующий аргумент.
Именно это и происходит здесь.
if (divisor == 0) {
throw new IllegalArgumentException("Argument 'divisor' is 0");
}
Сделайте следующее:
if (denominator == 0) throw new ArithmeticException("denominator == 0");
ArithmeticException - это исключение, которое обычно возникает при делении на 0.
public class ZeroDivisionException extends ArithmeticException {
// ...
}
if (denominator == 0) {
throw new ZeroDivisionException();
}
Примерно так:
if(divisor == 0) {
throw new ArithmeticException("Division by zero!");
}
Это можно сделать двумя способами. Либо создайте свой собственный класс исключений для представления ошибки деления на ноль, либо создайте исключение того же типа, что и среда выполнения java в этой ситуации.
public class DivideByZeroException() extends ArithmeticException {
}
Затем в своем коде вы должны проверить разделение на ноль и выбросить это исключение:
if (divisor == 0) throw new DivideByZeroException();
Добавьте в свой код проверку деления на ноль и вызовите арифметическое исключение:
if (divisor == 0) throw new java.lang.ArithmeticException("/ by zero");
Кроме того, вы можете рассмотреть возможность выдачи исключения недопустимого аргумента, поскольку делитель нуля равен неверный аргумент для передачи вашему методу setKp ():
if (divisor == 0) throw new java.lang.IllegalArgumentException("divisor == 0");