Я передаю строку в этот метод. Строка "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);
}
}