Неправильное исключение - PullRequest
       2

Неправильное исключение

0 голосов
/ 20 февраля 2012

Я передаю строку в этот метод. Строка "44". Затем я анализирую его в int и делаю оператор if, чтобы увидеть, находится ли он между 1 и 12. Затем он переходит к оператору else, где у меня есть - выбрасывать новое IllegalArgumentException ("Недопустимый номер месяца здесь:" + inSetString);

По какой-то причине это не генерируется, и оно переходит к следующему исключению, которое выдается - выдает новое IllegalArgumentException ("Недопустимая строка названия месяца:" + inSetString);

Почему он выбрасывает второе исключение, а не первое? Это идет к другому заявлению. Я проверил это с помощью - System.out.println («кроме» + inSetString);

Вот мой код:

 public void setMonthName(String inSetString)    
 {
         int i = 0;
         monthNumber = -1;

         try
         {
            System.out.println("first" + inSetString);
            i = Integer.parseInt(inSetString);
            System.out.println("next" + inSetString);
            if (i >= 1 && i <= 12)
            {
               monthNumber = i;
            }
            else
            {
                   System.out.println("except" + inSetString);
                throw new IllegalArgumentException("Illegal month number here: " + inSetString);
            }
         }
            catch (IllegalArgumentException e)
            {       

            }

      // if it gets to here we know it's a string
         for (int index = 0; index < monthNames.length; index++)
         {
            if (monthNames[index].equalsIgnoreCase(inSetString))
            {
               monthNumber = index;
            }
         }
         if (monthNumber == -1)
         {
            throw new IllegalArgumentException("Invalid month name string: " + inSetString);
         }
      }

1 Ответ

8 голосов
/ 20 февраля 2012

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

Попробуйте добавить несколько журналов (или e.printStackTrace()) в блоке catch, вы увидите, что произойдет.

Также попробуйтеиспользуя отладчик вашей IDE вместо добавления операторов печати.Вы лучше поймете, как выполняется ваша программа.

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