s. Если вы когда-либо думали, что вам нужно, просто дайте времени выполнения сделать это, а не использовать

ал о непроверенных и проверенных вопросах, ни один из интернет-ресурсов не был по-настоящему ясен о разнице и когда использовать оба.

Из того, что я понимаю, оба они генерируются во время выполнения, оба представляют состояния программы, которые находятся за пределами ожидаемых границ логики, но проверенные исключения должны быть явно перехвачены, а непроверенные - нет.

Мой вопрос, предположим, ради аргумента у меня есть метод, который делит два числа

double divide(double numerator, double denominator)
{    return numerator / denominator;    }

и метод, который требует где-то отдел

void foo()
{    double a = divide(b, c);    }

Кто отвечает за проверку случая, когда знаменатель равен нулю, и следует ли проверять или снимать исключение (игнорируя встроенные в Java проверки деления)?

Таким образом, метод деления будет объявлен как есть или как

double divide(double numerator, double denominator) throws DivideByZeroException
{
    if(denominator == 0) throw DivideByZeroException
    else ...
}

void foo()
{
    try{
        double a = divide(b, c);
    }
    catch(DivideByZeroException e)
    {}
}

или без проверенного исключения, как:

double divide(double numerator, double denominator)
{
    if(denominator == 0) throw DivideByZeroException
    else ...
}

void foo()
{
    if(c != 0)
       double a = divide(b, c);
}

и позволить foo проверить деление на ноль?

Эта проблема изначально возникла в написанной мной математической программе, в которой пользователи вводили числа, а логические классы выполняли вычисления. Я никогда не был уверен, должен ли GUI немедленно проверять наличие неподходящих значений или внутренняя логика должна перехватывать их во время вычисления и генерировать исключения.

Ответы на вопрос(0)

Ваш ответ на вопрос