Как я должен бросить деление нулевым исключением в Java, на самом деле не делясь на нуль?

Я приехал, чтобы полагать, что, как правило, "детали реализации" не являются деталями (в том смысле, что много проблем возникают, когда Вы рассматриваете некоторые определенные проблемы реализации как простые детали, которые могли быть игнорированы как мелочи с "архитектурной" точки зрения)

24
задан Eric 1 November 2009 в 18:27
поделиться

5 ответов

Вы не должны , а генерировать исключение ArithmeticException. Поскольку ошибка находится в предоставленных аргументах, вызовите исключение IllegalArgumentException . Как сказано в документации :

Брошено, чтобы указать, что методу был передан недопустимый или несоответствующий аргумент.

Именно это и происходит здесь.

if (divisor == 0) {
    throw new IllegalArgumentException("Argument 'divisor' is 0");
}
52
ответ дан 28 November 2019 в 22:16
поделиться

Сделайте следующее:

if (denominator == 0) throw new ArithmeticException("denominator == 0");

ArithmeticException - это исключение, которое обычно возникает при делении на 0.

16
ответ дан 28 November 2019 в 22:16
поделиться
public class ZeroDivisionException extends ArithmeticException {
    // ...
}

if (denominator == 0) {
    throw new ZeroDivisionException();
}
8
ответ дан 28 November 2019 в 22:16
поделиться

Примерно так:

if(divisor == 0) {
  throw new ArithmeticException("Division by zero!");
}
3
ответ дан 28 November 2019 в 22:16
поделиться

Это можно сделать двумя способами. Либо создайте свой собственный класс исключений для представления ошибки деления на ноль, либо создайте исключение того же типа, что и среда выполнения java в этой ситуации.

Определите пользовательское исключение

public class DivideByZeroException() extends ArithmeticException {
}

Затем в своем коде вы должны проверить разделение на ноль и выбросить это исключение:

if (divisor == 0) throw new DivideByZeroException();

Throw ArithmeticException

Добавьте в свой код проверку деления на ноль и вызовите арифметическое исключение:

if (divisor == 0) throw new java.lang.ArithmeticException("/ by zero");

Кроме того, вы можете рассмотреть возможность выдачи исключения недопустимого аргумента, поскольку делитель нуля равен неверный аргумент для передачи вашему методу setKp ():

if (divisor == 0) throw new java.lang.IllegalArgumentException("divisor == 0");
8
ответ дан 28 November 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: