Использование возврата в блоке catch? - PullRequest
0 голосов
/ 28 сентября 2018

Я впервые создаю Java-приложение для калькулятора GPA, используя Swing API.Это мое первое приложение с графическим интерфейсом.

Я обработал 3 исключения в следующих случаях

  • , если пользователь вводит десятичное значение
  • , если пользователь вводит отрицательное значениезначение
  • , если пользователь оставляет текстовое поле пустым.

Я использовал ключевое слово return в блоке catch (особенно в случае ArithmeticException), поскольку программа все еще вычисляла GPAдаже после того, как сообщение об ошибке было показано (я не хотел этого).

Хотя код работает нормально, как я хочу, использует ли return, как показано в моем коде, правильный / хороший подход к моей проблеме?

Код:

try{
    int temp;
    temp = Integer.parseInt(c1.getText());
    if(temp < 0){
        throw(new ArithmeticException());
    }
}
catch(NumberFormatException ex){
     JOptionPane.showMessageDialog(null,"please fill the fields with proper values.");
     return;
}
catch(ArithmeticException e){
     JOptionPane.showMessageDialog(null,"negative values not allowed");
     return;
}

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Я бы сказал, что операторы return полностью относятся к инвидиву.Некоторым они не нравятся, другим нравятся.

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

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

Это было бы чище:

try{
    int temp;
    temp = Integer.parseInt(c1.getText());
    if(temp < 0){
     JOptionPane.showMessageDialog(null,"negative values not allowed");
     return;
    }
}
catch(NumberFormatException ex){
     JOptionPane.showMessageDialog(null,"please fill the fields with proper values.");
     return;
}
0 голосов
/ 28 сентября 2018

Если после этого нет другого кода:

try{
    int temp;
    temp = Integer.parseInt(c1.getText());
    if(temp < 0){
        throw(new ArithmeticException());
    }
}
catch(NumberFormatException ex){
     JOptionPane.showMessageDialog(null,"please fill the fields with proper values.");
     return;
}
catch(ArithmeticException e){
     JOptionPane.showMessageDialog(null,"negative values not allowed");
     return;
}

, тогда вы можете удалить предложение return, чтобы сделать его чище, это совершенно не нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...